发新帖

IDA调试DEX

[复制链接]
26694 7
本帖最后由 rel 于 2015-9-17 00:07 编辑

今天突然想看看IDA6.6调试Dex到底啥样,没想到一路的坑。。。谢谢热心的@LAI。本来没啥大的价值来分享,但是想了想自己遇到的坑觉的还是分享一下比较好,省的以后有人跟我一样心血来潮时掉坑里。
再说一句:百度确实不如google靠谱!!!

使用IDA调试Dex
调试IDA需要满足一下两个条件的任何一条
1  AppAndroidManifest.xmlApplication标签包含属性android:debuggable=true
2  /default.propro.debuggable的值为1
一般正常的软件发布时都不会把android:debuggable设置为true,所以要达成条件1)需要对app进行重新打包。这个方法简单但容易被检测。可以使用第二种,具体方法参见具体可参考:http://www.cnblogs.com/goodhacker/p/4106139.html

开始调试:(这里网上资料一大把)
1.ida打开apk文件,选择dex文件进行加载
2.设置debugger选项,Debugger->Debuggeroptions->Set specific options,按如图1所示进行设置,然后一路确定返回
3.找到要下断点的位置,光标移到要下断点的那一行,按f2下断点
4.手机开启调试选项,连接到电脑,运行apk
5.选中IDA pro窗口,按f9运行,如果出现下图的画面,就说明设置成功,可以进行动态调试了。在IDA中配置
至此我们就可以进行调试了,但是我发现无法查看变量的值。我们可以通过
点击Debugger->Debugger windows->Locals来打开本地变量窗口效果如下图,但是需要提前这时选中Debugger->Use source level debugger,否则或弹出警告并且locals里什么也看不到。
此时我们发现locals里寄存器是Bad type。这表示类型不对,我们可以通过Debugger->Debugger windows->watch view 来查看v0里的内容。具体方法如下
右键AddWatch或直接按Insert键,插入一个寄存器v0,注意大小写;
插入时我们需要指定变量的类型,如(Stringv1,(char *v2,(intv3等形式类似于C++里的类型强转。这样我们才可以看到寄存器的值。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

精彩评论7

听鬼哥说故事    发表于 2015-9-17 08:54:02 | 显示全部楼层
支持下~不过用IDA调试dex有不少局限性,用Eclipse或者IDEA还好点,方便查看变量以及修改数据。

举报 使用道具

回复 支持 反对
sumith    发表于 2015-9-17 09:16:08 | 显示全部楼层
新手第二种方法看不懂。。。

举报 使用道具

回复 支持 反对
wruih    发表于 2015-9-17 18:53:55 | 显示全部楼层
最好 用 ida和 boch虚拟机联合调试 。这样更方便

举报 使用道具

回复 支持 反对
huluxia    发表于 2015-9-17 19:00:05 来自手机  | 显示全部楼层
支持支持!

举报 使用道具

回复
ken    发表于 2015-9-17 20:30:44 | 显示全部楼层
用android  studio调试dex。。  IDA调试各种不好使

举报 使用道具

回复 支持 反对
chenjingyes    发表于 2015-9-17 23:42:24 | 显示全部楼层

支持支持!     希望哪位大牛  出个比较详细的eclipse调试dex的教程!!     我还记得有 个叫gikdbg的调试工具了!希望也给出个教程

举报 使用道具

回复 支持 反对
tomcnc    发表于 2015-9-18 17:31:00 | 显示全部楼层
用Eclipse和IDEA超好调!

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表