调试前准备工作:
adb push android_x86_server /data/local/tmp/ 模拟器 (android android_server)
chmod 777 android_server
#运行 ./android_server
#在本地执行adb 做端口转发 adb forward tcp:23946 tcp:23946
ida调试分为静态调式和动态调式, 下图new为静态调式, go为动态调式(最好用android)
ida里 - ctrl+f5 转为C代码 - F5键(windows fn+F5) 把汇编代码转成C代码
- shift+F12 查看so文件中所有常量字符串的值 有的密码之类的可能就在这里
静态调试 根据类名找到偏移量
eg:(
)此处 11A8即为函数偏移量
动态调试:
选中go后,点击Debugger——Attach——Remote ARMLinux/Android debugger(真机)/ Remote Linux debugger(模拟器)
host填127.0.0.1,选中要调试的app, 等待加载
ctrl + s 找到要调试的so文件 选择用X字样(可执行的)
按键盘G键, 输入绝对地址,跳转到要调试的函数处
如何计算要调试函数的绝对地址:
绝对地址 = so文件的基地址 + 该函数的偏移量(上面静态调式的)
注 so文件的基地址在哪儿找:
快捷键 ctrl + s 找到目标so文件 Start 那一项就是 基地址
函数的偏移量在哪儿找:
以静态方式打开so文件,函数列表里
跳转到目标函数后,在此处设置断点(快捷键F2 或 fn+F2)
断点设置好后,点击左上角三角形运行,等待APP运行到此断点处,就会停止,此时即可调试