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函数是在用户操作的时候才能触发,只需要下好断点,用户进行触发即可

最新文章

  1. VirtualBox安装Debian6的方法和步骤(详细)
  2. 树链剖分+线段树 BZOJ 1036 [ZJOI2008]树的统计Count
  3. Cheatsheet: 2016 08.01 ~ 08.31
  4. 在PLSQL中编译复杂的java(转)
  5. C#实现自动升级(附源码)
  6. Python多线程(2)——线程同步机制
  7. JSP生成条形码
  8. 【英语】Bingo口语笔记(26) - Take系列
  9. 如何在Android应用中加入广告
  10. HDU 4336-Card Collector(状压,概率dp)
  11. 寻找素数对(hd1262)
  12. 怎样使用 App Studio 高速定制你自己的 Universal Windows App
  13. hdu4705(树形dp)
  14. Linux 安装DenyHost防止ssh被暴力破解
  15. MVC-AOP思想-Filter 三种注册方式
  16. while,for,if输入账号密码判断(还请各位大牛能够优化,本人刚学习一周)
  17. 拿到BAT等大厂offer以后,我发现了关于秋招的一些真相
  18. 深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -
  19. 利用python脚本(xpath)抓取数据
  20. Excel文件转为其他格式文件

热门文章

  1. iOS and JAVA 的 RSA 加密解密 (转载整理 )
  2. Superslide插件无效的问题
  3. Good Bye ACM
  4. C#执行存储过程的简化
  5. jQuery核心之jQuery Object及其相关的常用方法
  6. Corel Painter 15在Surface Pro 4下开启笔触压力感应
  7. 【poj2828】Buy Tickets 线段树 插队问题
  8. Eclipse下Ruby的配置]
  9. [转]AsyncDisplayKit 教程:达到 60 FPS 的滚动帧率
  10. 如何将android studio项目转换成eclipse
  11. 海尔U+的启发:让用户对智能家居拥有“话语权”
  12. springboot中配置tomcat的access log
  13. 向mysql中导入向导时如表xlsx
  14. JDBC-DBCP
  15. eclipse实现代码块折叠-类似于VS中的#region……#endregion
  16. CAAnimationDelegate 代理方法没调用
  17. Android相关概念
  18. 小白学习安全测试(一)——Http协议基础
  19. jumpserver的安装
  20. sitemesh入门