使用 IDA 调试应用

本章节将向您介绍如何快速的使用 FIRERPA 以及其相关功能和脚本快速的进行安卓应用的调试,我们的演示环境为安卓 10 系统,主机系统为 Ubuntu 22.04,已安装 IDA 7.5 (wine)、ADB、jdb、Python 等相关工具,建议您的 IDA 至少为 7.5 及以上,并且安装最新版本的 FIRERPA 服务端。

动态调试

设置为可调试模式

在此之前,如果您的系统已经为调试模式,则无需进行此步骤。否则,请打开 FIRERPA 远程桌面,在终端输入 setdebuggable,输入命令后,您的手机将会触发一次软重启,不过不必担心,大约两分钟就会完全恢复正常状态,此时,您的手机已经是可调试模式。

动态调试

安装 IDA 调试服务

再继续调试前,您还需要将 IDA 自带的用于安卓调试的服务端上传到设备上,您可以在您的 IDA 安装目录的 dbgsrv 目录下找到 android_server 以及 android_server64,如果您调试的目标应用使用了 32 位链接库,请使用 android_server,否则请使用 android_server64,将您所需的文件拖拽上传或使用 adb push 到安卓设备上,并赋予可执行权限。

chmod 755 android_server*

赋予可执行权限后,需要启动 android_server 服务,您可以通过 adb(需 root 权限)或者远程桌面终端执行此可执行程序。高版本的系统(>=10)需提前设置 IDA_LIBC_PATH 环境变量。

IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so ./android_server64 -kk

备注

对于调试目标为 32 位的应用,需修改 IDA_LIBC_PATH 为 /apex/com.android.runtime/lib/bionic/libc.so,并使用 32 位的 android_server 调试服务。

转发 IDA 调试服务

对应调试这种实时性及性能要求较高的场合,我们建议使用 USB 连接,请确保您将设备插入当前电脑并已完成 adb 授权,随后请执行如下命令。

adb forward tcp:23946 tcp:23946

备注

23946 为 IDA android_server 的默认监听端口,如果您启动 android_server 时修改过此端口,请重新指定。

开始应用调试

我们没有做太多的工作,只是帮您封装好了一个脚本,可以帮您自动完成后续的大部分操作,依照脚本输出提示进行操作即可,您可以在项目的 tools 目录下找到 ida.py 脚本,使用如下命令即可。

python3 ida.py -d 192.168.0.2 -a com.android.settings

动态调试

其中,-d 参数即为您的设备 IP,即运行 FIRERPA 服务的设备IP,-a 参数则为应用的包名,执行命令之后,将会提示您继续将您的 IDA 软件附加到应用进程。

动态调试

动态调试

动态调试

动态调试

好了,全部流程已经走完,请回到 ida.py 命令行,按下回车键,现在您可以继续调试了。