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. django: db - admin

    本讲演示简单使用 Django Admin 功能. 一,修改 settings.py,添加 admin 应用: INSTALLED_APPS = ( 'django.contrib.auth', 'd ...

  2. .NET Linq获取一个集合中的一个或多个属性,赋值到新的类对象

    //得到自定义的list var list = schoolGradeClassModelList.Select(x => new DropDownListData() { DataTextFi ...

  3. AngularJs练习Demo17 ngRoute

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. UIViewController的生命周期(图解)

    当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                             创建对象,分配空间2.init (initWithNibName ...

  5. 自己手动绿色化MyEclipse

    绿化过程因每个人的文件存放路径不同而不同 首先打开你解压的MyEclipse文件,或者以前安装的MyEclipse重装系统后不能用,打开到这里:记住路径,比如我的是:D:\MyEclipse 我们打开 ...

  6. Android 虚拟机快捷键

    何须这样麻烦,直接用快捷键就行了,你用鼠标点来点去怎么还不如用快捷键来得快:一下是快捷键: Home键(小房子键) 在键盘上映射的就是home键,这倒是很好记. Menu键 用于打开菜单的按键,在键盘 ...

  7. JSONP的客户端的具体实现

    JSONP的客户端的具体实现 1.远程调用一个js,代码如下:         <script type="text/javascript">         var ...

  8. ECSTORE1.2 重启开启信任登陆模块(删除KEY)

    1).若启用Mongodb 需要删除KEY分别为 1 2 3 be90a668d9f2eb1950bae1bf6b0835ce 939e64939c3f65cfb646e7948c5b80df 58d ...

  9. Codeblocks 添加库(undefined reference 错误的处理)

    静态库  (扩展名为 .a 或 .lib) 是包含函数的文件,用于在link阶段整合执行程序,动态链接库(扩展名  .dll)是不在link阶段整合进执行程序中的. DLL文件在执行阶段动态调用 下面 ...

  10. IE6双倍margin间距解决方法

    虽然现在很少有人在用ie6了,但作为前端人员,是不的不面对的问题. 在ie6中,使用float后的元素,在margin—left,这是你会发现距离和你想的不一样,其他的浏览器又是正常的,增大margi ...