什么都只会一点 发表于 2019-3-4 08:21

安卓逆向分析笔记---002

本帖最后由 什么都只会一点 于 2019-3-9 19:44 编辑

这次与上次的软件很像,不过这次里面是输入的注册码~

【所需工具】AndroidKiller、Unicode工具

【用例下载链接】链接:https://pan.baidu.com/s/1wsoKyF4HvTdfq3N2zWIlIw 提取码:bnp1

【开始操作】
与上次一致,将APK拖到AndroidKiller里面,反编译完成后点击“工程管理器”,与上次分析一样,双击打开AndroidManifest.xml,如下图

根据路径找到第一启动类,点开Java源码看代码,如下图

实际上我们已经可以看到注册码就是“写个CM都很难啊”,当然可以直接输入这个注册成功,但是我希望的是什么都不输入就能注册成功,所以我打算去改判断的内容,我在MainActivity.smali里面没有看到相关的Unicode码,所以只能搜索,我先打开Unicode工具将以下几项设置好,输入“写个CM都很难啊”,如下图

将Unicode码区的内容复制,重新返回AndroidKiller,点击左侧工程搜索,在字符框粘贴复制的内容,下面设置成如下图所示,点击搜索

emmmmmm…,换个字符串试试


搜索到一行数据,点开打开看看

可以看到左下角有解码后的翻译,向上翻,发现了这行Unicode码

为什么之前没有搜索到?emmmmmmm,比较一下

原来是“CM”没有被翻译过来,所以才会搜索不到,那就直接看这里

简单的翻译一下
const-string v1, "\u5199\u4e2aCM\u90fd\u5f88\u96be\u554a"   #将“写个CM都很难啊”的字符串赋值给V1

invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z   #调用equals方法比较V0与V1的值是否相等

move-result v0   #返回一个布尔值传给V0(V0、V1相等就等于1,不相等就等于0)

if-eqz v0, :cond_0    #如果V0等于0,就跳转到cond_0(cond_0后面的内容是注册失败)

【修改方法一】
const-string v1, "\u5199\u4e2aCM\u90fd\u5f88\u96be\u554a"

invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

if-eqz v0, :cond_0

修改为:
const-string v1, "\u5199\u4e2aCM\u90fd\u5f88\u96be\u554a"

invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

const\4 v0,0x1

if-eqz v0, :cond_0

【修改方法二】
const-string v1, "\u5199\u4e2aCM\u90fd\u5f88\u96be\u554a"

invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

if-eqz v0, :cond_0

修改为:
const-string v1, "\u5199\u4e2aCM\u90fd\u5f88\u96be\u554a"

invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

if-nez v0, :cond_0

【修改方法三】(分析认为可以这样修改,目前没有试过)
const-string v1, "\u5199\u4e2aCM\u90fd\u5f88\u96be\u554a"

invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

if-eqz v0, :cond_0

修改为:
const-string v1, "\u5199\u4e2aCM\u90fd\u5f88\u96be\u554a"

invoke-virtual {v1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

if-eqz v0, :cond_0

--------------------------------------------------------------------------------------------

安卓逆向分析笔记---003:https://www.52pojie.cn/thread-888820-1-1.html

renyangyu 发表于 2019-3-13 16:21

本帖最后由 renyangyu 于 2019-3-13 16:22 编辑

什么都只会一点 发表于 2019-3-13 07:36
现在像这种登录写在本地的很少,大部分软件都有服务器,然后那些有注册机的软件,一般都会有各种壳,很麻 ...
但是论坛上好多软件也是要注册账号都被改成了无需登录即是vip,只是没有一个逆向相关教程,是服务器反馈有没有会员,我觉得本地验证是一个突破口,不管服务器返回数据是什么,本地都返回vip返回的动作。比如之前有人发布的一款软件,在支付页面返回,无论是否支付都是返回成功。这个思路可能很简单 ,找这个爆破点很麻烦,您是这个意思么?

什么都只会一点 发表于 2019-3-13 23:58

renyangyu 发表于 2019-3-13 16:21
但是论坛上好多软件也是要注册账号都被改成了无需登录即是vip,只是没有一个逆向相关教程,是服务器反 ...

除非是动态分析,要不然自己找起来确实需要大量分析,一般都是以大牛的经验总结来快速定位判断的位置,进行修改

ilig33 发表于 2019-3-4 08:55

坐第一排,好好学习。

丶那年如此年少o 发表于 2019-3-4 09:41

androidkiller搜索字符串下的“搜索”按钮后的小三角点开可以直接转unicode。

yaoyao7 发表于 2019-3-4 09:42

继续,我速度好像跟你差不多

什么都只会一点 发表于 2019-3-4 09:45

丶那年如此年少o 发表于 2019-3-4 09:41
androidkiller搜索字符串下的“搜索”按钮后的小三角点开可以直接转unicode。

开始没发现这个功能,后来才知道的,哈哈哈,很尴尬

嘟嘟侠 发表于 2019-3-4 09:59

很详细,感谢楼主

byh3025 发表于 2019-3-4 10:06

我也认为方法三可行,得实际操作验证下

netle8 发表于 2019-3-4 14:17

学习了,感谢分享!

FENGMUTIAN 发表于 2019-3-4 14:54

前来学习

无影扫地僧 发表于 2019-3-6 06:57

好好学习。
页: [1] 2 3
查看完整版本: 安卓逆向分析笔记---002