IDA动态调试Android的DEX文件

Android程序的dex文件的动态调试确实是个大问题,网上也有一些教程但是不是特别的详细,今天用到了IDA动态调试Android的DEX文件,特此记录一下。

 

IDA 6.6新添加了对dex文件的调试支持,但是功能还是很弱的说,因为IDA动态调试Android程序的DEX文件时,查看变量很不方便,可以说然并卵。

 

@根据android的官方文档,如果要调试一个App里面的dex代码,必须满足以下两个条件中的任何一个:
1.App的AndroidManifest.xm中Application标签必选包含属性android:debuggable="true"
2./default.propro.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 修改后的default.prop内容

说明:上面这段话引用自http://bbs.pediy.com/showthread.php?p=1291716大神的。

 

其实,对于第2个条件有一个简单的方法,在网上找个靠谱的刷机助手软件,然后下载刷机助手中提供的供开发者使用的ROM版本,刷到Android的测试手机上就可以了。博主就是这么做的,之前费了好大的劲从网上找教程,但是由于Linux系统不熟悉,尝试几次都失败了,后来就是用这个办法解决问题的。因此,博主的Nexus 4手机的/default.propro.debuggable的值为1,符合Android程序的DEX文件的被动态调试的条件。


工具:

谷歌Nexus 4

IDA Pro 6.6

Eclipse

 

0x1,将Nexus 4手机开启开发者USB调试模式连接到电脑上。连接成功以后,打开Eclipse程序,查看Nexus 4手机的设备序号,如图:




从图中,可以得知Nexus 4手机的设备序号为03aae257437d8244,将这个设备序号记下来,后面调试Android程序的DEX文件时要用到,然后关闭Eclipse程序

 

0x2,Cmd命令行情况下,安装要调试的apk程序到手机上。




0x3,IDA 6.6的设置。

1.用IDA 6.6打开apk文件,选择dex文件进行加载;

2.设置debugger选项,Debugger->Debugger options->Set specific options按如下图所示进行设置,然后确定返回;

Debugger->Process Options其他默认不变,端口这里改为8700

3.找到在感兴趣的函数要下断点的位置,光标移到要下断点的那一行,按F2下断点;












4.选中IDA Pro 6.6窗口,按F9运行,如果出现下图的画面并且手机屏幕出现"Waiting For Debugger"界面就说明设置成功,可以进行动态调试了。




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




5.当IDA中断在了我们设置断点的地方,这时选中ida->debugger->use source level debugging(源码水平调试),然后点击ida->debugger->debugger windows->locals打开局部变量窗口,就可以产看变量的值了。尽管如此,IDA动态调试Android程序的Dex文件时,变量的查看不是很方便。




说了那多,IDA调试Android程序的DEX文件就是这么简单。

 

参考博文的网址:

http://bbs.pediy.com/showthread.php?p=1291716

http://www.cnblogs.com/goodhacker/p/4257433.html

http://drops.wooyun.org/?p=5942&preview=true



文档的下载的地址:http://download.csdn.net/detail/qq1084283172/9201921




  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IDA Pro是一款强大的反汇编工具,可用于反汇编各种二进制文件,包括Android应用程序中的dex文件。以下是使用IDA Pro调试dex文件的步骤: 1. 下载并安装IDA Pro软件,并打开要调试dex文件。 2. 在IDA Pro中选择“File” -> “Open”,然后选择要调试dex文件。如果IDA Pro无法自动识别文件类型,请手动选择“DEX - Dalvik Executable”文件类型。 3. 等待IDA Pro分析dex文件。一旦分析完成,您将看到一个反汇编窗口,其中包含dex文件的反汇编代码。 4. 选择要调试的代码段,并在IDA Pro中选择“Debugger” -> “Process Options”。 5. 在“Process Options”窗口中,选择“Android Debugger”作为调试器,并选择要使用的调试器选项。您可以选择使用本地调试器或远程调试器,具体取决于您的需求。 6. 在“Process Options”窗口中,输入要启动的调试器命令行。例如,如果您使用的是本地调试器,您可以输入“adb shell dalvikvm -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y”。 7. 单击“OK”按钮,以启动调试器并开始调试代码。 8. 在IDA Pro的调试窗口中,您可以使用各种调试命令,例如“run”、“step”、“breakpoint”等,来控制代码的执行。 9. 您还可以使用IDA Pro的其他调试工具,例如内存查看器和寄存器查看器,来进一步分析代码和调试问题。 总之,IDA Pro是一款功能强大的反汇编工具,可用于调试Android应用程序中的dex文件。通过遵循上述步骤,您可以轻松地使用IDA Pro调试dex文件,并深入了解代码执行的细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值