rel 发表于 2015-9-17 00:03:52

IDA调试DEX

本帖最后由 rel 于 2015-9-17 00:07 编辑

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

使用IDA调试Dex调试IDA需要满足一下两个条件的任何一条1)App的AndroidManifest.xml中Application标签包含属性android:debuggable=true2)/default.prop中ro.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.手机开启调试选项,连接到电脑,运行apk5.选中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,注意大小写;插入时我们需要指定变量的类型,如(String)v1,(char *)v2,(int)v3等形式类似于C++里的类型强转。这样我们才可以看到寄存器的值。


听鬼哥说故事 发表于 2015-9-17 08:54:02

支持下~不过用IDA调试dex有不少局限性,用Eclipse或者IDEA还好点,方便查看变量以及修改数据。

sumith 发表于 2015-9-17 09:16:08

新手第二种方法看不懂。。。{:4_89:}

wruih 发表于 2015-9-17 18:53:55

最好 用 ida和 boch虚拟机联合调试 。这样更方便

huluxia 发表于 2015-9-17 19:00:05

支持支持!

ken 发表于 2015-9-17 20:30:44

用androidstudio调试dex。。IDA调试各种不好使

chenjingyes 发表于 2015-9-17 23:42:24


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

tomcnc 发表于 2015-9-18 17:31:00

用Eclipse和IDEA超好调!
页: [1]
查看完整版本: IDA调试DEX