前言
总结一下android动态调试的方法,分别是java层和native层,java层主要用到的工具是android studio,而native层用ida进行动态调试。
安卓动态调试方法总结
Java层动态调试
使用baksmali.jar(可以在网上找到)反编译apk

Android studio打开生成的smali文件


把src文件夹设置为srouce root

在程序中下断点

添加remote,端口设置为8700


打开ddms,选中要调试的程序

选择android studio的debug程序

连接成功

运行,停在断点处

变量窗口

寄存器窗口

可在代码中选择要看的寄存器,右键,选择add to watches查看寄存器值

native层动态调试
- 复制文件,修改权限,以Root权限运行android_server。
adb push android_server /data/local/tmp/
cd /data/local/tmp/
chmod 755 android_server
./android_server

- 端口转发
adb forward tcp:23946 tcp:23946 //windows 控制台下转发window 到模拟器或者手机的

启动程序,设置process options


选择attach process

ida就挂载上去,此时可以通过搜索module.list找到我们自己编写的so函数,然后可以下断点进行调试