ida动态调试笔记

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

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

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

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

  1. adb devices

得到结果如下:

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

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

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


出现上述提示,标识文件安装成功


上图中红色区域是刚刚安装的程序

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

就是上图中那个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可以看到文件已经被上传。

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

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

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

  1. adb forward tcp:23946 tcp:23946

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

然后输入如下命令:

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

出现如下提示:

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

出现下图:

然后在ida中按ctrl+s:出现下述界面
按ctrl+f查找crackme,出现下述内容:
选择图中有执行权限的so模块,出现如下界面。
 
然后点击键盘上面的g按钮,出现如下界面:
选择JNI_OnLoad,点击ok。出现如下界面:
按f2设置断点,然后按f5,查看伪代码
找到可能出现自毁程序的位置(blx语句之前),设置断点:
上述2cec54 cmp R0,#1即为修改位置
打开菜单view->open subviews->hex dump
将图中位置全部修改为0,继续运行程序。
 
再打开另外一个ida,把阿里apk解压,打开里面的的libcrackme.so文件,点击exports导出表。
打开后复制下面红圈部分。
返回上一个ida,按g字母,出现如下界面
点击ok后出现如下界面:
按f5查看伪代码

在伪代码处找到校验密码的位置,在下面红线处设置断点:
运行程序至断点。找到下图中变量v6对应的地址
打开hex view,点击g,在对话框输入该地址,查看该地址对应的字符串:
该字符串存放的是一个地址,为AA2D1450,再次点击字母G,输入该地址,下图字符串即为正确密码
继续运行程序,输入上述密码:
出现如下胜利画面
 

ida动态调试笔记的更多相关文章

  1. 逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

    0x00 前言 2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具 ...

  2. 转:使用IDA动态调试WanaCrypt0r中的tasksche.exe

    逆向分析——使用IDA动态调试WanaCrypt0r中的tasksche.exe 转:http://www.4hou.com/technology/4832.html 2017年5月19日发布 导语: ...

  3. IDA动态调试技术及Dump内存

    IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...

  4. 【转】安卓逆向实践5——IDA动态调试so源码

    之前的安卓逆向都是在Java层上面的,但是当前大多数App,为了安全或者效率问题,会把一些重要功能放到native层,所以这里通过例子记录一下使用IDA对so文件进行调试的过程并对要点进行总结. 一. ...

  5. 学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难

    作者:潘安仁链接:https://www.zhihu.com/question/40720890/answer/87926792来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  6. IDA动态调试Android的DEX文件

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

  7. IDA 动态调试

    感谢南邮,让我把ida动态调试,给搞定了,困扰了很久,之前下的ubuntu的源,好像有问题,ifconfig这个命令一直装不上,突然想起来了我的服务器很久没用了,重装了下系统,换成ubuntu,这里记 ...

  8. 【转】Android IDA 动态调试最完善攻略,跨过各种坑

    前提条件和运行环境一定要写清楚,不然会有很多坑,坑死人. (1)IDA 是最新的7.0版本  (2) JDB 使用Java安装目录下的 (3)系统是win10 使用命令窗口时有很大的差别 (4)手机是 ...

  9. ida动态调试so,在init_array和JNI_ONLOAD处下断点

    本文涉及到的apk.请在github下载https://github.com/jltxgcy/AliCrack/AliCrackme_2.apk. 0x00 怎样在JNI_ONLOAD下断点.參考安卓 ...

随机推荐

  1. 2017-3-7-lint183-wood-cut

    2017-3-7-lint183-wood-cut 在河之洲 算法 lintcode problem lintcode183 wood cut solution 注意两点 注意边界条件 取的是最大值而 ...

  2. C#实现灰度图像和彩色图像的4种镜像

    一:灰度图像的水平镜像核心代码:  二:灰度图像的竖直镜像 核心代码:三:彩色图像的水平镜像 核心代码: 四:彩色图像的竖直镜像 核心代码: 

  3. UVA 10382 Watering Grass (区间覆盖,贪心)

    问题可以转化为草坪的边界被完全覆盖.这样一个圆形就换成一条线段. 贪心,从中选尽量少的线段把区间覆盖,按照把线段按左端点排序,记录一个当前已经覆盖区间的位置cur, 从左端点小于等于cur选一个右端点 ...

  4. CAD控件的鼠标事件(网页版)

    _DMxDrawXEvents::MouseEvent CAD控件中的鼠标事件. 参数 说明 LONG lType 事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标 ...

  5. Python2 和Python3 的区别

    print Python 2中的print语句被Python 3中的print()函数取代,这意味着在Python 3中必须用括号将需要输出的对象括起来. 在Python 2中使用额外的括号也是可以的 ...

  6. mysql crash cource 书中实例

    样例表 CREATE TABLE customers(  cust_id      int       NOT NULL AUTO_INCREMENT,  cust_name    char(50)  ...

  7. 接口的多态使用; 接口应用实例:U盘、打印机可以使用共同的USB接口,插入到电脑上实现各自的功能。

    接口的多态使用 接口应用实例:U盘.打印机可以使用共同的USB接口,插入到电脑上实现各自的功能.

  8. 20180904 定时器setTimeout和setInterval回调问题

    引用: setTimeout和setInterval两者的区别 setTimeout和setInterval的优缺点 setTimeout和setInterval详解 两者的作用都是在定时多少毫秒后回 ...

  9. 【原】基于matlab的蓝色车牌定位与识别---绪论

    本着对车牌比较感兴趣,自己在课余时间摸索关于车牌的定位与识别,现将自己所做的一些内容整理下,也方便和大家交流. 考虑到车牌的定位涉及到许多外界的因素,因此有必要对车牌照的获取条件进行一些限定: 一.大 ...

  10. 201621123080《java程序设计》第六周作业总结

    201621123080<java程序设计>第六周作业总结 1. 本周学习总结 2. 书面作业 clone方法 1.1 在test1包中编写Employee类,在test2包中新建一个Te ...