前提条件和运行环境一定要写清楚,不然会有很多坑,坑死人。

(1)IDA 是最新的7.0版本  (2) JDB 使用Java安装目录下的 (3)系统是win10 使用命令窗口时有很大的差别

(4)手机是4.4 以下系统

1.手机要有Root权限

2.复制IDA 安装目录下dbgsrv 文件里面的android_server文件到   手机内存储的 /data/local/tmp 目录下

3.控制台输入 adb shell su 命令获取管理员权限

4.cd /data/local/tmp 进入android_server目录 ,输入chmod 777 android_server命令获取执行权限

5.  ./android_server启动android_server

6.新开一个命令窗口    不用获取管理员权限

直接输入   adb forward tcp:23946 tcp:23946   命令 端口转发

7.adb shell am start -D -n  包名/activity路径   启动应用

adb shell am start -D -n com.cmxxzwy.mz/com.e4a.runtime.android.mainActivity

8.打开IDA

9.菜单 debugger->attach->Remote ARM Linux/android debugger

10.debug options一定要选

11.hostname处输入127.0.0.1

12.点击ok后,在弹出的进程选择框 选择要调试的com.cmxxzwy.mz 进程

13.手机上的App开始运行后一定要点击IDA 的开始运行按钮。如果有反调试的话,一定要先下断点,不然一运行就崩溃了,一切重新来过。

.

14.打开DDMS,将Eclipse切换到DDMS界面,下一步要用

15.查看  要调试的进程,发现8700端口被占用。可以使用8677端口

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700要改为

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

用jdb将app恢复执行。

16.好了可以开始调试了 F7进入函数,F8单步调试,F9跳到下一个断点,F2下断点,G调到函数地址

17.以某数字加固为例 给libc.so 的fopen函数起始位置下断点。

然后一路F9,直到出现

然后开始F8,一直F8执行,知道出现如下提示框

才真正进入我们要调试的so库

18.动态调试的时候面对的都是Arm汇编,理解能力要跟的上调试速度,这有点难。怎么办?

那就是动静态结合调试。我们来看动态调试窗口

1为这句代码的动态内存地址, 2为该so文件的动态内存基地址  3为内存段的大小

那么我们知道,静态调试窗口显示的都是代码的相对偏移地址,所以我们用  1动态内存地址  - 2内存基地址 = 静态相对偏移地址

所以 F24B4就是静态代码的偏移地址。

所以我们打开静态调试窗口就可以看到

这样,动态和静态的代码就对上了,用静态的代码来记录动态调试的位置信息,就不怕调试过程中断带来的麻烦。而且使用F5来辅助理解代码也是棒棒哒

19.动态调试过程往往反反复复,命令有时候懒得重新输入。快捷键 ctrl +c结束当前命令程序,按上下键输入之前输过的命令。

20.有时候,跳转到指定地址的时候全是DCB 数据,这怎么办

这个时候可以按 C 键识别为代码,或者按 P 键识别为函数

21.我们动态调试经常就是为了看内存,那么怎么看内存。很简单,执行下图前三步,就能在4步的视图中查看内存

from:https://blog.csdn.net/marketandtechnology/article/details/82116074

【转】Android IDA 动态调试最完善攻略,跨过各种坑的更多相关文章

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

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

  2. Android studio动态调试smali

    前面介绍了使用IDA动态调试smali,这种方法设置简单,不用重打包,用起来方便,但是如果变量类型设置错误则会马上退出调试,这是让人不爽的地方,而使用Android studio则不会.   0x01 ...

  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动态调试WanaCrypt0r的wcry.exe程序

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

  6. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

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

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

  8. ida动态调试笔记

    ida动态调试笔记 目标文件:阿里安全挑战赛的第二题 点击打开链接 使用环境:ida6.8点击打开链接,adt bundle点击打开链接 首先打开avd安卓模拟器,界面如下: 在dos下运行adb命令 ...

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

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

随机推荐

  1. from __future__ import unicode_literals, absolute_import

    Q:python模块中的相对导入,绝对导入,有些地方会写 from __future__ import absolute_import 希望有个更详细的讲解. A: 相对导入:在不指明 package ...

  2. vue slot 插槽备忘

    老是记不住插槽咋回事 记录下来备忘 父组件 <tab><template slot="boy" slot-scope="test">{{ ...

  3. Django ConnectionAbortedError WinError 10053 错误

    因为ajax默认是异步提交,可是有时候我们会发现,本来要求请求马上出现,可是异步会导致后面突然再执行,这样就出问题了. (1)添加这样一段代码 $.ajaxSetup({ async : false ...

  4. [virtualbox] virtualbox 安裝 ubuntu,但 virtualbox 卻無法執行 ubuntu 的快速鍵,解法方式

    solution open virtualbox -> file -> preference -> input -> below picture 按下快速鍵,即發生作用. 原先 ...

  5. dedecms--二次开发之会员帐号过期无法登录

    最近在二次开发织梦系统的会员功能:要求会员帐号有期限,开始时间以会员添加时间为开始,这样登录的时候需要判断帐号是否过期,原本的织梦系统中是通过$rs = $cfg_ml->CheckUser($ ...

  6. 饼系列—圈饼 doughnut

    chartControl属性 ApplicationSettings: Name:控件名字 AccessibleDescription: ??? AccessibleName:??? Accessib ...

  7. eclipse启动的时候 一直未响应状态 然后闪退

    解决方案:在你的工作目录中,有一个.metadata目录,里面是工作区及各插件的信息,删除此目录可以解决问题.保险起见,先剪切到另一地方.再重启启动.

  8. CDOJ_149 解救小Q

    原题网址:http://acm.uestc.edu.cn/#/problem/show/149 小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她. 迷宫里面有一些陷阱,一旦走到陷阱里,就会 ...

  9. Springboot 集成 Thymeleaf 及常见错误

    Thymeleaf模板引擎是springboot中默认配置,与freemarker相似,可以完全取代jsp,在springboot中,它的默认路径是src/main/resources/templat ...

  10. PropertyPlaceholderConfigurer 基本用法

    目录 一.PropertyPlaceholderConfigurer 的继承体系 二.PropertyPlaceholderConfigurer 的基本概念 三.PropertyPlaceholder ...