1.工具准备

动态调试Smali代码需要的工具有:apktool,netbeans,signapk.jar,ddms

2.apktool反编译

不加-d选项时生成的smali代码是.class结尾的,不能用于动态调试,加上-d选项后生成的smali代码是.java 结尾的,并且加入了调试信息(在代码前面会加上 a=0;// ),-o指定输出目录

3.apktool回编译

使用apktool回编译第二步加入调试信息的代码,生成新的apk文件,使用命令如下:

out是第二步中生成的文件夹。

4.signapk.jar签名

要对新生成的apk签名才能安装进模拟器或真机,这里使用signapk进行签名,命令如下:

证书是android自带的,可以在android目录下找到。

5.adb安装apk

使用adb将加入调试信息的apk安装进模拟器或真机,命令如下:

6.使用netbean+ddms动态调试

新建项目,选择 “基于现有源代码的java项目”:

netbean1

点击下一步,填写项目名称和反编译出的的项目文件夹,然后点下一步,点击添加文件夹将前面用apktool反编译出的代码添加进来:

netbean2

 

接下来直接点击完成即可。然后打开ddms,在调试器或者真机中打开要调试的app,在ddms中可以查看该app对应的进程信息,其中8700即为调试端口。

下面要将netbeans和ddms连接起来,在netbeans中选择 “调试”–>”连接调试器”,按如下方式设置:

netbeans3

这时就进入了调试模式,打开java文件,点击行号下断点。在模拟器或真机中运行app,当执行到断点位置时,程序会自动挂起。F7步入,F8步过,可以查看当前变量信息等。

netbeans5

观看更多有关 的文章?

*

+
跳转到评论