Android逆向学习-使用ida动态调试中的那些坑
教程链接:《教我兄弟学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
之后点击attach process 就可以看到手机上正在运行的app进程
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位的。
将同目录下的android_server64传输到手机运行就好了。
armlinux debugger: more than one special register present
这条报错我看网上的文章并不多,平常我使用的ida是32位的,更换64位的ida即可解决。
但是我不太清楚其中的原理,想来应该是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后尝试。
解决了以上问题终于可以使用ida愉快的进行调试了
当我好不容易进入调试界面,下断点运行程序,ida直接崩溃报start process failed错误。上网查资料显示,用了32位的库调试64位程序会出现这个问题。但是我选择调试armeabi-v7a文件夹下64位的so文件,仍然存在这个问题。下一步准备换ida的版本试一试,如果你知道解决方法可以在评论区告诉我。