IDA远程调试真机app
第一步:启动 android_server
,并修改端口
# 启动android_server
./android_server -p31928
第二步:端口转发、挂起程序
# 端口转发
adb forward tcp:31928 tcp:31928
# 挂起程序
adb shell am start -D -n com.qianyu.antidebug/com.qianyu.antidebug.MainActivity
第三步:打开Monitor.bat文件(该文件位置:SDK\android-sdk\tools)
看到我们要调试的程序,其中 8636 是调试端口,8700 是映射端口。
第四步:IDA附加程序、设置Debugger Options参数、程序首次运行
注意,这里要调试的ip选择127.0.0.1
选择要调试的程序
等待附加成功,看到 PC 指令指向 libc.so 即代表附加成功
下面设置 Debugger Options 参数
运行,点击IDA左上角的三角符号,运行程序,这里并不一定能够一次运行到我们要调试的程序,但是不要着急,在这里我们只点击一次运行。
当看到IDA上方显示running,即代表运行成功
第五步:通过 JDB(Java Debugger)与远程 Java 虚拟机(JVM)建立调试连接的命令
# port端口是上面Monitor显示的程序调试端口
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8636
此时,看到IDA的LR指令和PC指令指向一处,同时你手机上的程序界面也发生了变化
查看 IDA 输出的 日志,发现加载了我们要调试的 odex 文件
第六步:多次运行 IDA
注意:如果找不到我们调试的so文件,一定要多次运行指导加载出so文件
多次运行 IDA 左上角的符号,直到日志中显示加载了要调试的 so 文件
多次点击运行后,终于加载到要调试的so文件了
在Modules模块中检索我们要调试的 so 文件,并点击进入
在 libantidebug.so 文件中检索 JNI_Onload 函数,并进入
下面就可以调试so文件了