Android 动态调试¶
Android 调试基本原理¶
一般来说,Android 根据如下的顺序来判断一个应用是否可以被调试
- 检测 boot.img 中的 ro.debuggable 是否为1,为 1 的话,手机中的任何应用均可以调试。
- 否则,检测对应应用中 AndroidManifest.xml 中 \<application> 元素中是否包含了android:debuggable="true",如果有的话,才会开启调试支持。
自然,我们也就有两种方法来使得一个应用可以被调试
- 将一个 apk 文件解包,在 \<application> 元素中添加 android:debuggable="true",然后重打包,签名。
- 修改 boot.img 中的 ro.debuggable 为 1。
一般来说,因为前者需要我们每次都需要修改应用,比较麻烦,我们更倾向于后者,。
对于后者来说,我们需要 root 手机,并刷入相关的镜像。(!!找一篇合适的文章!!)
此外,由 Andoird AVD 生成的模拟器默认情况下 ro.debuggable 被设置为1。
ro.debuggable
的值可以根据如下命令来查询
adb shell getprop ro.debuggable
基本调试工具¶
DDMS¶
DDMS(Dalvik Debug Monitor Service)是Dalvik虚拟机调试监控服务,可以监视Android程序在运行过程中的状态以及结果,可以大大加快我们的程序分析效率。这是一款由Android SDK提供的工具,其中有设备截屏,查看运行的线程信息、文件浏览、Logcat、Method Profiling、广播状态信息、模拟电话呼叫、接收SMS等功能。该工具一般位于Android SDK的tools目录下,其中ddms.bat就是用来启动DDMS的。DDMS中比较重要的功能主要是
- 文件浏览,我们可以观察并分析程序在执行过程中对文件的生成,修改,删除操作。
- Logcat,可以输出软件的一些调试信息。
- Method Profiling,可以跟踪程序的执行流程。
IDEA/Android Studio¶
安装 smaliidea 插件,动态调试smali。
IDA Pro¶
吾爱破解。
本页面的全部内容在 CC BY-NC-SA 4.0 协议之条款下提供,附加条款亦可能应用。