ida动态调试笔记

目标文件:阿里安全挑战赛的第二题 点击打开链接

使用环境:ida6.8点击打开链接,adt bundle点击打开链接

首先打开avd安卓模拟器,界面如下:

ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP

在dos下运行adb命令,查看当前连接的设备:

  1. adb devices

得到结果如下:

ida动态调试笔记-LMLPHP

ida动态调试笔记-LMLPHP

上图显示了本机连接的安卓模拟设备。

然后用adb命令安装上面的阿里测试文件:

  1. adb install 阿里测试路径/文件名

ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
出现上述提示,标识文件安装成功

ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
上图中红色区域是刚刚安装的程序

接下来把ida下面的调试服务器上传到安卓模拟器当中

ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP

就是上图中那个android_server文件,使用如下命令上传:

  1. adb push C:\吾爱破解安卓工具箱v1.0fix\Rolan\bin\debug\IDA_Pro\dbgsrv\android_server data\local\tmp\mydbserv\

然后输入adb shell命令进入安卓设备

cd data\local\tmp\

进入上述目录,用ls可以看到文件已经被上传。

ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP

输入   ./bdgserver 启动该服务器,出现如下提示:

ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP

表示开始在23946端口进行监听了。

然后打开另外一个cmd窗口,使用如下命令:

  1. adb forward tcp:23946 tcp:23946

把模拟器的端口转接到电脑

然后输入如下命令:

  1. adb shell am start -D -n com.yaotong.crackme/com.yaotong.crackme.MainActivity

出现如下提示:

ida动态调试笔记-LMLPHP
表示程序启动成功。
ida动态调试笔记-LMLPHP
然后启动eclipse下面的ddms.bat,出现如下界面:
ida动态调试笔记-LMLPHP
然后打开ida.
ida动态调试笔记-LMLPHP
ida动态调试笔记-LMLPHP
选择图中画红线部分,出现下图
ida动态调试笔记-LMLPHP
参数填写如上,然后点击debug options,出现下图:
ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
勾选图中部分,点击确定。出现如下内容。
ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
点击ok.出现如下内容:
ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
从菜单选择如下选项
ida动态调试笔记-LMLPHP
在如下选项上打钩
ida动态调试笔记-LMLPHP
点击左上角绿色运行按钮。
ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
然后在cmd下面运行如下命令:
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

出现下图:

ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
然后在ida中按ctrl+s:出现下述界面
ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
按ctrl+f查找crackme,出现下述内容:
ida动态调试笔记-LMLPHPida动态调试笔记-LMLPHP
选择图中有执行权限的so模块,出现如下界面。
ida动态调试笔记-LMLPHP
 
然后点击键盘上面的g按钮,出现如下界面:
ida动态调试笔记-LMLPHP
选择JNI_OnLoad,点击ok。出现如下界面:
ida动态调试笔记-LMLPHP
按f2设置断点,然后按f5,查看伪代码
ida动态调试笔记-LMLPHP
找到可能出现自毁程序的位置(blx语句之前),设置断点:
ida动态调试笔记-LMLPHP
上述2cec54 cmp R0,#1即为修改位置
打开菜单view->open subviews->hex dump
ida动态调试笔记-LMLPHP
将图中位置全部修改为0,继续运行程序。
 
再打开另外一个ida,把阿里apk解压,打开里面的的libcrackme.so文件,点击exports导出表。
ida动态调试笔记-LMLPHP
打开后复制下面红圈部分。
ida动态调试笔记-LMLPHP
返回上一个ida,按g字母,出现如下界面
ida动态调试笔记-LMLPHP
点击ok后出现如下界面:
ida动态调试笔记-LMLPHP
按f5查看伪代码
ida动态调试笔记-LMLPHP
在伪代码处找到校验密码的位置,在下面红线处设置断点:
ida动态调试笔记-LMLPHP
运行程序至断点。找到下图中变量v6对应的地址
ida动态调试笔记-LMLPHP
打开hex view,点击g,在对话框输入该地址,查看该地址对应的字符串:
ida动态调试笔记-LMLPHP
该字符串存放的是一个地址,为AA2D1450,再次点击字母G,输入该地址,下图字符串即为正确密码
ida动态调试笔记-LMLPHP
继续运行程序,输入上述密码:
ida动态调试笔记-LMLPHP
出现如下胜利画面
 

ida动态调试笔记-LMLPHP

05-08 15:29