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. BFS 简单思想以及代码

    BFS(广搜思想) 广度优先搜索 广度优先搜索是图论的搜索算法之一,以下便进行简单叙述 对于每一个顶点来说,都存在着三种颜色 白色,灰色,黑色 而对于每个顶点,都有三种数据类型 颜色类型,前驱或者父节 ...

  2. TFS2018 找不到JRE 错误

    配置TFS 2018 server configurion 报错 : Search requires Oracle Server JRE 7 Update 55 or higher or JRE 8 ...

  3. k8s1.13.0二进制部署-flannel网络(二)

    Flannel容器集群网络部署 Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来.VXLAN:将源数据包封装到UDP中,并使用基础网 ...

  4. opensue "Have a lot of fun..."的出处

    每次登陆opensuse都会出现“Have a lot of fun...”,觉得奇怪. 通过搜索发现在这是/etc/motd文件中配置的. MOTD(5)                       ...

  5. ES6中const的用法

    const声明一个只读的常量.一旦声明,常量的值就不能改变.且const一旦声明变量,就必须立即初始化,不能留到以后赋值. const的作用域与let命令相同:只在声明所在的块级作用域内有效. con ...

  6. js类型判别大合集

    1.typeof number,string,boolean,undefined,symbol,object,function 对象中除了函数为function,其他对象都判别为object, 缺陷: ...

  7. scanf()的使用

    scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中. 如下面代码: #include<stdio.h> int main() { int a,b; sca ...

  8. 使用apache benchmark(ab) 测试报错: apr_socket_recv: Connection timed out (110)

    使用ab( apache benchmark )测试的时候,使用如下命令: ab -n 15000 -c 200   http://localhost/abc/abc.php 执行操作一定条数,或连续 ...

  9. kali添加更新源

    /etc/apt/sources.list 具体方法参考: http://blog.csdn.net/gmnet/article/details/14471835 http://blog.sina.c ...

  10. leetcode-19-merge

    88. Merge Sorted Array 解题思路: 需要注意,两个数组是排好序的,且nums1够大.所以从两个数组的尾端开始比较,大的那个放在nums1的尾部,并且放了之后就可以前进. 例如nu ...