IDA动调SO文件
步骤一:将 android_server 文件 push 到手机中并执行
复制IDA目录下的\dbgsrv
目录下的android_server
和android_server64
到真机中并执行:
1 |
|
默认启动端口为23946。
步骤二:端口转发
另开一个cmd执行如下指令:
1 |
|
第一个端口对应电脑端,第二个端口对应手机端。
执行后,将会通过电脑端的23946端口转发数据到手机端的23946端口。
步骤三:am 启动要调试的应用程序
执行如下命令启动要调试的应用程序:
1 |
|
成功后手机端会弹出如下界面:
步骤四:使用IDA附加进程
用IDA打开想要调试的so库,调试器选择Remote ARM Linux/Android debugger
。
在菜单栏的Debugger -> Debugger options中设置程序暂停的时机,按下图所示勾选选项框:
在菜单栏的Debugger -> Process options中设置主机和端口:
在菜单栏的Debugger -> Attach to Process中选择要调试的进程进行附加:
选择完后,IDA界面会进入到动调界面。按 F9 继续执行。
步骤五:jdb连接
运行以下命令:
1 |
|
应用所在端口号可通过DDMS工具来确定的(DDMS需要的jdk版本为1.8):
可能会出现
无法附加到目标 VM
。出现了就多试几次(可能是因为android版本太高)。
以上执行成功后,DDMS中的红色小虫子就会变成绿色。
步骤九:继续执行程序
再IDA界面按F9使程序继续执行,在底部的窗口会显示已加载的so文件。当加载到。此后可以下断点进行调试。
插曲
调试过程中出现了如下报错:
Command "ProcessStart" failed
。IDA could not create a temporary breakpoint for the next instruction.A temporary breakpoint is required in order to suspend the execution after a step.Please use F9 to continue the execution.If you have a breakpoint at the current address,please remove it before continuing.
以上情况,F7、F8、F9均失效。
后面用另一个Android版本的手机才调试成功的。
参考:
新手向总结:IDA动态调试So的一些坑 - 知乎 (zhihu.com)
IDA动调SO文件
http://example.com/2023/09/06/Android安全/IDA动调SO文件/