Android IDA 动态调试最完善攻略,跨过各种坑

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

(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步的视图中查看内存

  • 9
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
IDA(Interactive Disassembler)是一款反汇编工具,版本7.0是其最新版本。动态调试安卓应用程序是使用IDA 7.0进行分析和调试。 首先,我们需要准备一个安卓设备(手机或模拟器)和一台运行IDA 7.0的计算机。 1. 在计算机上安装IDA 7.0,并确保它与安卓设备能够进行通信。可以通过连接设备到计算机,或者使用网络调试器,如Frida或Xposed等。 2. 打开IDA 7.0并创建一个新的分析项目。可以选择从APK文件或已经安装在设备上的应用程序进行分析。 3. 如果选择从APK文件进行分析,可以通过"File"菜单下的"Load File"选项加载APK文件。如果选择从已安装应用程序进行分析,则可以通过"File"菜单下的"Attach to process"选项选择目标应用程序。 4. 一旦应用程序被加载或附加,IDA 7.0会自动进行静态分析,并将汇编代码显示在界面上。 5. 接下来,可以使用IDA 7.0的动态调试功能。通过"Debugger"菜单下的"Debugger options"选项,可以设置断点、单步执行代码、查看和修改寄存器值等。 6. 当应用程序执行到断点处时,IDA 7.0会暂停执行,并显示当前的程序状态。此时,可以查看当前的寄存器、内存内容以及堆栈等信息,以帮助分析程序。 7. 可以通过IDA 7.0的调试功能来逐步执行代码,以便分析应用程序的行为和逻辑。可以在特定的代码位置设置断点,并观察寄存器和内存的变化。 8. 在动态调试过程中,可以使用IDA 7.0的其他功能,如动态数据流分析、函数调用图等来深入分析应用程序。 9. 最后,可以通过"Debugger"菜单下的"Detach"选项或关闭IDA 7.0来结束动态调试。 总之,使用IDA 7.0动态调试安卓应用程序可以帮助我们深入分析程序的执行过程和逻辑,从而更好地理解和修改应用程序的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闽农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值