1 前言
最近博主在学习Android逆向的时候,参照吾爱破解论坛的《教我兄弟学Android逆向系列课程》
学习的时候,学到第8章《教我兄弟学Android逆向08 IDA爆破签名验证》
的时候,开始上手 ida pro 反汇编 so 库,在动手修改 so 库指令的时候遇到了困难,经过一番研究,终于搞懂了在 ida pro 中修改 so 库中 arm 汇编指令的方法,并完成了课后习题:
爆破李华Demo中的用户名和密码 要求输入任意用户名和密码 会提示登陆成功
于是写下这篇博客记录研究过程,并把被作者一笔带过的最核心问题如何修改so库讲清楚。
附上原吾爱破解教程地址:
《教我兄弟学Android逆向系列课程+附件导航帖》
《教我兄弟学Android逆向08 IDA爆破签名验证》
2 准备
(1) 下载 ida pro 7.0
原贴中使用的是ida pro 6.6,博主使用的是 ida pro 7.0,这一版是免安装的绿色版,下载地址:
(2) 下载 Android Killer
(3) 下载夜神模拟器
如果有真机也可以使用真机,这里我们使用夜神模拟器:
(4) 下载demo
原贴中的demo:黑宝宝.apk
下载地址:
链接:https://pan.baidu.com/s/1h6pX2ARE3qtiKiYbcnJ-3g 密码:duv5
(5) 下载 jni.h
下载链接:https://pan.baidu.com/s/1n16NEx67zLHfGtVpU-CKAA 密码:7xg6
(6) Arm指令手册
(7) arm指令转换网站
3 SO库的选择
首先把 黑宝宝.apk
拖进 Android Killer 中反编译,我们可以看到在 lib 中有三个 libJniTes.so
:
armeabi : 32位 arm cpu 库,几乎所有手机都支持
armeabi-v7a : 64位 arm cpu 库,现在我们买的手机基本上都是64位的cpu了
x86 : 在电脑上运行的模拟器或者基于Intel x86的平板电脑上用的
这里要说一下历史,在电脑CPU芯片领域,Intel独霸天下,x86
代表32位cpu,x86_64
代表64位的cpu,cpu位数增加不仅意味着运算速度更快,同时还代表着可以使用的内存更大,例如32位系统最大只能使用4G内存,所以windos xp上装8G内存条完全是浪费