1 / 17
文档名称:

IDA动态调试.docx

格式:docx   大小:1,547KB   页数:17页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

IDA动态调试.docx

上传人:才艺人生 2022/4/19 文件大小:1.51 MB

下载得到文件列表

IDA动态调试.docx

文档介绍

文档介绍:IDA动态调试
安卓APP动态调试-IDA实用攻略
netwind · 2015/05/06 10:27
0x00 前言
随着智能手机的普及,移动APP已经贯穿到人们生活的各个领域。 文件获取:
1
2
3

<manifest xmlns:android="" package="">
<application android:allowBackup="true" android:debuggable="true"
android:icon="***@drawable/creakme_bg2" android:label="***@string/app_name" android:theme="***@style/AppTheme">
<activity android:label="***@string/app_name" android:name=".MainActivity">
然后在IDA点击Debugger->Process Options
enter image description here
其他默认不变,端口这里改为8700。这里默认端口是23946,我在这里困扰了很久,就是因为这个端口没有改为8700所致。然后我们看看这个8700端口是怎么来的。在Android SDK里提供了一款工具DDMS,用来监视APP的运行状态和结果。,运行后就会启动DDMS。由于我的本机安装了SDK的ADT插件,DDMS集成到了Eclips中,打开Eclips->Open perspective->ddms就启动了DDMS。
如图所示:
enter image description here
在DDMS选中某个进程后面就会注释出它的调试端口,本机这里是8700。
到此所有的工作就准备就绪,然后就可以下断点来调试该APP了。我们在APK改之理中在com目录下查看smali文件 (),那么我们就对它下断以跟踪APP的运行。
在IDA里搜索字符串getPwdFromPic,发现onClick有调用该函数
我们在onClick 函数开始位置按F2下断如图:
enter image description here
然后点击上图中绿色三角形按钮启动调试如图:
enter image description here
调试过程中有一个问题出现了很多次,浪费了我大量的时间,就在写文章的时候,操作时还是遇到了这样的问题。就是点击启动后IDA提示can’t bind socket,琢磨了很久终于找到原因了,当打开过一次DDMS后 每次启动Eclips都会启动DDMS 而8700端口正是被这个DDMS给占用了,然后每次都会启动失败,解决办法就是 虚拟机运行起来后关闭掉Eclips,这时一切就正常了!
事例中是一个APP crackme 提示输入密码才能进入正确界面。这个时候我们输入123,点击登陆,IDA中断在了我们设置断点的地方,这时选中ida->debugger->use source level debugger,然后点击ida->debugger->debugger windows->locals打开本地变量窗口,如图:
enter image description here
然后按F7或F8单步跟踪程序流程,同时可以观察到变量值的变化,也可以在IDA右键选择图形视图,
可以看到整个APP执行的流程图:
enter image description here
如上图所示 变量窗口中我们输入了123 被转化成的密码是么广亡,pw变量也显示出了正确的密码,其实这个时候已经很容易判断出正确密码了。
0x03 Andoid原生动态链接库动态调试
通常为了加密保护等措施,有时dex执行过程中会调用动态链接库文件,该文件以so为后缀,存在于APP文件包里。
enter image description here
这里我们以动态附加的方式来调试原生库。
准备工作
1、将IDA->dbgsrv目录下的android_server拷贝到虚拟机里,并赋予可执行权限
DOS命令分别为:
adb shell