1、工具介绍

IDA pro: 反汇编神器,可静态分析和动态调试。

模拟机或者真机:运行要调试的程序。

样本:阿里安全挑战赛第二题:http://pan.baidu.com/s/1eS9EXIM

2、前期准备

2.1  安装样本程序

adb install AliCrackme_2.apk

2.2 上传android_server文件

adb push android_server /data/local/tmp/
adb shell chmod 777 /data/local/tmp/android_server

3、调试步骤

3.1  开启android_server,监听23946端口,与IDA pro通信

adb shell /data/local/tmp/android_server

3.2  设置本地端口转发

adb forward tcp:23946 tcp:23946

3.3  以调试模式启动程序

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

3.4 启动IDA pro,点击Debugger->attach->Remote ARMLinux/Android debugger,输入localhost,选择要调试的进程即可。

3.5 附加程序成功后,选择,Debugger option,勾选

suspend on process entry point

suspend on thread start/exit

suspend on library load/unload

三项,然后按f9运行调试程序,此时IDA pro 挂起

3.6  使用jdb恢复程序执行

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=

3.7 此时IDA pro断在linker中,此时module中并没有libcrackme.so,说明licrackme.so还没有加载到内容中,只需要跟几步f8,在寄存器中看到libcrackme.so加载进来了,就可以在module中找到,有两种情况

1、如果IDA Pro能够解析成功,双击module中的libcrackme.so就可以看到它export的函数,就可以右键下断点了

2、如果IDA Pro解析失败,需要再开一个IDA,查找到要下断的函数地址,加上libcrackme.so加载到内存的地址即可(在init_array下断只能使用这种方法)。

3.8  IDA Pro按F9几次,直到断在自己下断的地方即可

3、总结

本章内容和调试原生程序有重复,就省略了一些内容。

另外还有一种so函数是在用户操作的时候才能触发,只需要下好断点,用户进行触发即可

android调试系列--使用ida pro调试so的更多相关文章

  1. android调试系列--使用ida pro调试原生程序

    1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:自己编写NDK demo程序进行调试 2.前期准备 2.1  准备样本程序(假设已经配置好 ...

  2. 安卓动态调试七种武器之孔雀翎 – Ida Pro

    安卓动态调试七种武器之孔雀翎 – Ida Pro 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是 ...

  3. Windows程序调试系列: 使用VC++生成调试信息 转

    Windows程序调试系列: 使用VC++生成调试信息 ZhangTao,zhangtao.it@gmail.com, 译自 “Generating debug information with Vi ...

  4. js调试系列: 断点与动态调试[基础篇]

    js调试系列目录: - 额,我说的不是张敬轩的 断点 这首歌,是调试用到的断点,进入正题吧. 昨天留的课后练习 1. 分析 votePost 函数是如何实现 推荐 的.其实我们已经看到了源码,只要读下 ...

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

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

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

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

  7. Android学习系列(37)--App调试内存泄露之Context篇(下)

    接着<Android学习系列(36)--App调试内存泄露之Context篇(上)>继续分析. 5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncT ...

  8. IDA Pro使用(静态分析+动态调试)

    链接:http://skysider.com/?p=458 IDA Pro使用(静态分析+动态调试) 1.静态分析 IDA FLIRT Signature Database —— 用于识别静态编译的可 ...

  9. MAC使用IDA PRO远程调试LINUX程序

    1 背景 在学习Linux系统上的一些漏洞知识的时候,往往需要进行“实地测试”,但是在Linux系统上进行调试并不太方便,因为LINUX自带的GDB调试工具真的不太人性化,即使有GDBTUI之类的“伪 ...

随机推荐

  1. DataGrid 简单数据绑定实例1

    1.默认数据显示(自动显示列) 后台绑定 //DataGrid 数据绑定 dataGridOne.ItemsSource = _Context.Info.ToList(); 前台定义 <Data ...

  2. poj1418 Viva Confetti 判断圆是否可见

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Viva Confetti Time Limit: 1000MS   Memory ...

  3. LIS n*log(n)的理解

    很多时候lis 用二分的方法比较方便 这里写一下他的原理 这里仅对严格的最长上升子序列做讨论 这里有两个数列  一个数列是 原串的数列 a1-an  另一个数列是最长上升子序列辅助数列 s数列的长度为 ...

  4. [转]Windows与Linux系统下的库文件介绍

    什么是库   库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系 ...

  5. 求解:C#.Net 远程方法调用失败 (Exception from HRESULT: 0x800706BE)

    服务器:Windows Server2003 sp2服务器 客户端:XP SP3 内容:C#Winform客户端调用服务器的Excel模板生成报表的时候,生成失败,抛出的异常如下: TargetInv ...

  6. js获取url的各项参数

    function getQueryStringArgs() { //取得查询字符串并去掉开头的问号 var qs = location.search.length > 0 ? location. ...

  7. C# 获取计算机 信息

    /// <summary> /// 获取本机 机器名 /// </summary> /// <returns></returns> public sta ...

  8. JSONP的原理

    JSONP的原理 JSONP的最基本的原理是:动态添加一个<script>标签,而script标签的src属性是没有跨域的限制的. <script type="text/j ...

  9. html meta标签属性用法集合

    1.<meta name="generator" contect="">用以说明生成工具(如Microsoft FrontPage 4.0)等: 2 ...

  10. Python一路走来 DAY15 Javascript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一 如何编写     ...