【原创】IDA调试dex代码初体验

来源:互联网 发布:python time sleep作用 编辑:程序博客网 时间:2024/06/04 22:35
IDA 6.6新添加了对dex文件的调试支持,由于工作原因,我第一时间拿到了这个版本,下面就是针对这个功能的一些简单体验。
IDA对这个新功能提供了一个PDF文档进行说明,按照教程一步步来就可以完成对例子程序的调试,我这里选sina微博作例子简单讲一下实际调试的流程。
准备工作
根据android的官方文档,如果要调试一个App里面的dex代码,必须满足以下两个条件中的任何一个:
1)  App的AndroidManifest.xml中Application标签包含属性android:debuggable=true
2)  /default.prop中ro.debuggable的值为1
由于正常的软件发布时都不会把android:debuggable设置为true,所以要达成条件1)需要对app进行重新打包,这不仅每次分析一个App都重复操作,而且很多软件会对自身进行校验,重打包后执行会被检测到,所以想办法满足第2)个条件是个一劳永逸的办法,我实际使用的方法就是满足第二个条件。由于default.prop是保存在boot.img的ramdisk中,这部分每次重新启动都会重新从rom中加载,所以要到目的必须修改boot.img中的ramdisk并重新刷到设备中。我测试使用的设备为Nexus 7,修改步骤如下:
a)  从Google官方网站下载到boot.img,
b)  使用工具(abootimg,gunzip, cpio)把boot.img完全解开,获取到default.prop
c)  修改default.prop
d)  把修改后的文件重新打包成boot_new.img
e)  使用fastboot工具把boot_new.img刷入设备(fastboot flash boot boot_new.img)
名称:  1.png查看次数: 0文件大小:  3.4 KB
图1 修改后的default.prop内容
实际调试
解压缩sina微博的apk,把dex文件拖到ida中进行分析(非常慢,文件会到6G多,估计IDA的dex加载器有BUG),分析完成后按照IDA的教程对Debugger Options进行设置。
名称:  2.png查看次数: 0文件大小:  38.5 KB
图2 Debugger Options设置

设置后找到App的入口Activity——.SplashActivity, 在SplashActivity_OnCreate方法设置断点.
名称:  3.png查看次数: 0文件大小:  5.8 KB
图3 sina微博入口Activity定义

点击图片以查看大图图片名称:4.png查看次数:0文件大小:18.7 KB文件 ID :89858
图4 在SpalshActivity的OnCreate方法设置断点
点击执行或者按F9即可开始运行App,由于在入口Activity的OnCreate方法设置了断点,所以App执行后就会停在刚才设置的断点处等待用户操作。
点击图片以查看大图图片名称:5.png查看次数:0文件大小:29.2 KB文件 ID :89859
图5 执行后程序中断在设置的断点处

0 0