ida调试so文件
准备
将ida目录下的(如果以前调试过就不用了)
没有反调试so
开始
打开一个cmd
|
|
在打开一个cmd
|
|
查看so文件是否加载进内存map中
如下,成功
不成功,可能需要查看加载位置,可能需要点击一下按钮触发。
ida打开
(1)、ida->Go->Debugger->Attach->Remote ArmLinux/Android denugger
(2)、Hostname:127.0.0.1
(3)、接着出现一个窗口,右键选择Quick filter->包名[几个字母就行],(这里会出现pid和运行包名)->ok
(4)、ctrl+s->右键选择Quick filter->lib的名字->选择可执行的[X->x]
计算函数偏移
静态偏移: 0x988
动态基址: 0x7b8d3000
动态偏移: 0x988 + 0x7b8d3000 = 0x7b8d3988
g->0x7b8d3988
f2下断点
存在反调试so
那么怎么知道so文件存在反调试呢?
答:就是像上面那样做一遍,找到偏移后,运行程序,ida回闪退,那就有反调试了。可能结果如下:
接着开始调试具有反调试的so文件。
打开一个cmd
|
|
在打开一个cmd
|
|
这时候手机会出现Waiting For Debugger,等待调试界面。
如:
ida打开
1、载入apk的要调试so文件[反编译或者改后缀为zip]、下断点的JNI_Onload处开始下断点。
2、Debugger -> Switch-debuge -> Remote ArmLinux/Android denugger
3、Debugger -> Process options -> Hostname:127.0.0.1
4、Debugger -> Attach to process -> 右键选择Quick filter->包名[几个字母就行]。
jdwp协议端口转发
方法一、
如:
方法二、
直接打开ddms,选择这个app程序,如果ddms不能显示程序,可以安装XLnstaller.apk
运行
f9运行就好了