安卓逆向分析笔记---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:22 编辑
什么都只会一点 发表于 2019-3-13 07:36
现在像这种登录写在本地的很少,大部分软件都有服务器,然后那些有注册机的软件,一般都会有各种壳,很麻 ...
但是论坛上好多软件也是要注册账号都被改成了无需登录即是vip,只是没有一个逆向相关教程,是服务器反馈有没有会员,我觉得本地验证是一个突破口,不管服务器返回数据是什么,本地都返回vip返回的动作。比如之前有人发布的一款软件,在支付页面返回,无论是否支付都是返回成功。这个思路可能很简单 ,找这个爆破点很麻烦,您是这个意思么? renyangyu 发表于 2019-3-13 16:21
但是论坛上好多软件也是要注册账号都被改成了无需登录即是vip,只是没有一个逆向相关教程,是服务器反 ...
除非是动态分析,要不然自己找起来确实需要大量分析,一般都是以大牛的经验总结来快速定位判断的位置,进行修改 坐第一排,好好学习。 androidkiller搜索字符串下的“搜索”按钮后的小三角点开可以直接转unicode。 继续,我速度好像跟你差不多 丶那年如此年少o 发表于 2019-3-4 09:41
androidkiller搜索字符串下的“搜索”按钮后的小三角点开可以直接转unicode。
开始没发现这个功能,后来才知道的,哈哈哈,很尴尬 很详细,感谢楼主 我也认为方法三可行,得实际操作验证下 学习了,感谢分享! 前来学习 好好学习。