image-20210205211719813

教程链接:《教我兄弟学Android逆向09 IDA动态破解登陆验证》

踩坑记录

“./android_server”: error: Android 5.0 and later only support position-independent executables (-fPIE).

Android5.0以上对于可执行文件加入了一个安全验证,如果你使用的是ida pro6.6及以下的版本,请更换新版ida pro \dbgsrv\android_server 程序。

我直接从吾爱论坛中下载了最新的ida pro 7.5安装时的注意事项使用说明中已经很详细了。解压后直接运行目录中的IDA_Pro_7.5_绿化工具.exe


使用新版ida pro中的android_server程序,可以在我的Android8.0手机上运行了。设置好端口转发,继续使用ida去连接。

点击Debugger选项,点击switch debugger,选择Remote ARM/Linux Android debugger

再配置process options

image-20210205133115248

image-20210205133441495

之后点击attach process 就可以看到手机上正在运行的app进程

image-20210205134435024

Warning: rpc: bad packet length
2021-02-05 13:03:34 [1] Accepting connection from 127.0.0.1…
2021-02-05 13:03:34 [1] [1] Incompatible IDA version

这一步最好使用新版的ida 不然会出现如上报错,无法连接


ida pro 7.0 反编译 Android so 库后无法显示中文

参照https://blog.csdn.net/fuchaosz/article/details/104827280设置即可


Failed to find data segment of /system/bin/linker

Illegal segment bitness.

这条报错原因是用来测试的真机内核是64位的,,IDA里的android_server是32位的。

image-20210205134822426

将同目录下的android_server64传输到手机运行就好了。


armlinux debugger: more than one special register present

这条报错我看网上的文章并不多,平常我使用的ida是32位的,更换64位的ida即可解决。

image-20210205135214822

但是我不太清楚其中的原理,想来应该是32位和64位寄存器的数目不同。


modules中找不到libJniTest.so

工具与环境上的问题都解决后,却发现我的modules里面没有教程说的libJniTest.so文件。这是由于手机未root权限不够的原因。我的设备是Google pixel 欧版,刷入magisk并root十分方便,可以参考这篇文章https://www.itfanr.cc/2018/10/16/google-pixel-unlock-bl-and-root/。其它机型请自行root后尝试。


image-20210205135516011

解决了以上问题终于可以使用ida愉快的进行调试了

当我好不容易进入调试界面,下断点运行程序,ida直接崩溃报start process failed错误。上网查资料显示,用了32位的库调试64位程序会出现这个问题。但是我选择调试armeabi-v7a文件夹下64位的so文件,仍然存在这个问题。下一步准备换ida的版本试一试,如果你知道解决方法可以在评论区告诉我。