首页 > 代码库 > 利用IDA6.6进行apk dex代码动态调试

利用IDA6.6进行apk dex代码动态调试

网上公开IDA6.6已经有一段时间,这个版本有个好处就是可以动态调试java代码。正好现在需要动态调试,所以顺便练习一下。

根据android的官方文档,如果要调试一个apk里面的dex代码,必须满足以下两个条件中的任何一个:

1.apk中的AndroidManifest.xml文件中的Application标签包含属性android:debuggable=”true”

2./default.prop中ro.debuggable的值为1

由于一般软件发布时都会把android:debuggable设置为false,所以要达成条件1需要反编译原apk,修改AndroidManifest.xml并进行重新打包,这样不仅麻烦,而且很多软件进行了加固,要破解很难。所以想办法满足第2个条件是个一劳永逸的办法。

由于default.prop是保存在boot.img的ramdisk中,这部分每次重新启动都会重新从rom中加载,所以要到目的必须修改boot.img中的ramdisk并重新刷到设备中。修改步骤如下:

1.从Google官方网站下载到boot.img2.使用工具(abootimg,gunzip, cpio)把boot.img完全解开,获取到default.prop3.修改default.prop4.把修改后的文件重新打包成boot_new.img5.使用fastboot工具把boot_new.img刷入设备(fastboot flash boot boot_new.img)

具体可参考:http://www.cnblogs.com/goodhacker/p/4106139.html

由于我们这篇文章的重点是如何动态调试dex代码,所以我们就假设该dex是可调试的。

1.用ida打开apk文件,选择dex文件进行加载2.设置debugger选项,Debugger->Debugger options->Set specific options,按如图1所示进行设置,然后一路确定返回3.找到要下断点的位置,光标移到要下断点的那一行,按f2下断点4.手机开启调试选项,连接到电脑,运行apk5.选中IDA pro窗口,按f9运行,如果出现如图2的画面,就说明设置成功,可以进行动态调试了。

技术分享

图1 调试设置 

技术分享

图2 调试界面

注意:如果运行过程中一直显示如图3所示窗口,就需要关注一下你的手机屏幕,看是否是需要与用户进行交互了。

技术分享

图3

利用IDA6.6进行apk dex代码动态调试