apktool 2.0+netbeans 7.3调试apk
Apktool 2.0优化了调试的支持,相对1.5.3的版本,主要做了以下改进:
- 可以配合Netbeans 7.3调试apk
- 支持显示寄存器的值,这是非常好的改进(1.5.3只可以显示函数参数P的值)
目前2.0还没有release,这是我自己编译的版本,下载地址:http://pan.baidu.com/share/link?shareid=1438815794&uk=369410799
netbeans 7.3下载地址:https://netbeans.org/downloads/
具体调试方法,以test.apk为例:
步骤1:生成支持调试的apk
- 反编译:
java -jar apktool-2.0.0.jar d -d test.apk -o test.debug - 找到入口activity的oncreate()函数,在
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
后添加:
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V - 回编:
java -jar apktool-2.0.0.jar b -d test.debug -o test.debug.apk - 签名
- 安装
步骤2:netbeans设置
- 删除test.debug目录下的build文件夹
- 打开netbeans,选择“文件”-“新建项目”-“基于现有源代码的java项目”
- 在“项目文件夹处”选择test.debug目录
- 在“源包文件夹”出选择test.debug.smali目录
- 点击完成,项目创建完毕
步骤3:调试
- 在模拟器中运行重新打包的test.apk,test.apk会处于挂起状态
- 在netbeans中找到入口activity的oncreate函数,在刚才invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
下一行下断点 - 在netbeans中,选择“调试”-“连接调试器”
- 依次设置:
调试器:JPDA
连接器:SocketAttach
传输:dt_socket
主机:127.0.0.1
端口:8700
超时:[可不填] - 确定,即完成连接调试,可以发现IP停在了刚才下断点的地方。
- 可以看到,apktool2.0+netbeans7.3支持显示寄存器的值: