未完,编辑ing…
工具
- DDMS
位于安卓sdk的安装目录下,具体目录:…(你自己安装sdk的路径)\android-sdk\tools\monitor.bat ,这个bat就是DDMS,在eclipse和Android Studio界面打开的动态调试器都是这个东西。可以直接双击这个bat运行。 - AndBug
调试Android程序 - IDA Pro
调试Android原生程序 - gdb
调试Android原生程序
动态调试原理
Android程序的调试分为Android SDK开发的Java程序调试和Android NDK开发的原生程序调试。
Java程序调试
利用Dalvik虚拟机提供的调试特性来进行调试。
原生程序调试
使用传统的Linux程序调试方法,如GNU调试服务器来连接进行调试。
原生程序又分为动态链接库与普通可执行程序两种。
在真机中调试
在真机中进行调试,需要先检查真机的ro.debuggable属性值是否为1,如果为1,则真机中所有app都可调试。如果为0,则只有app的AndroidMainfest.xml文件中,标签中加入了android:debuggable="true"属性,才能进行调试。
在cmd中输入命令:
adb shell getprop ro.debuggable
获取ro.debuggable的值。一般真机出厂的时候,该值都会被设置为0。
在模拟器中调试
在模拟器中,系统的ro.debuggable属性默认为1,因此模拟器中的所有进程都可以随意调试。
寻找关键代码
代码注入法
字符串搜索,分析可疑代码位置,注入smali代码,打log或者toast消息,修改完成后重打包,再次操作app,分析日志或者看toast,在完成目标操作后是否有日志或者toast以确定是否找到了正确的代码位置
栈跟踪法
- ddms method profiling打印函数调用栈
- frida hook 打印函数调用栈
- 葫芦娃的Zentrace