lkamxmk 发表于 2019-9-16 23:13:00

Android逆向系列之动态调试(五)–gdb调试

## 一、环境准备
ndk、模拟器(需要root权限,可以使用命令: adb root)

## 二、调试准备
### 1.gdbserver
找到gdbserver,路径是 ndk目录下的prebuilt文件夹,其中有三个Android开头的文件夹,选择对应自己的CPU,进入文件夹即是gdbserver(这里是选择android-arm/gdbserver)
接下里将gdbserver传到模拟器中,命令 : adb push gdbserver /system/bin (注意这里的路径,第一个需在当前目录下,否则需带绝对路径,第二个可自己选择)

问题分析:这里push到/system/bin可能会报错

解决: 确保手机或模拟机已经root,输入命令: adb remount,然后再push进去,同样,下面的chmod权限赋予如果报错,可以使用su命令,具体为adb shell su chmod 777 filename
### 2.gdb.exe
找到gdb.exe,路径是:..\ndk\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin (同样这里的arm-linux-androideabi-4.9需要找到对应gdbserver,cpu类型的文件夹,一般是arm开头,选择一个即可)
完整的名字为:arm-linux-androideabi-gdb.exe 这里将其复制重命名为gdb.exe
### 3.调试
a.赋予gdbserver权限,命令: adb shell chmod 777 /system/bin/gdbserver

b.端口转发:adb forward tcp:23946 tcp:23946

c.运行gdbserver,

方法1: 命令: adb shell; 命令: cd gdbserver路径; 命令: ./gdbserver
方法2: 命令 adb shell gdbserver
(适用于将gdbserver放在/system/bin下的情况)
完整运行命令: adb shell gdbserver :23946 –attach
(PID可以在adb shell中使用 ps命令查询)
成功监听如下:



d.cmd下运行gdb.exe

e.(gdb)set disassemble-next on(显示汇编代码) set step-mode on(打开单步调试)

e.连接上gdbserver 在gdb界面输入 target remote 127.0.0.1:23946



至此,接下来就可以愉快地使用gdb的命令进行动态调试了,由于涉及较多的gdb调试知识,这篇文章只针对那些从软件调试转为安卓逆向研究的工作方便。
接下里的文章将介绍更加常用的IDA 动态调试so文件。

a277244390 发表于 2020-2-25 23:40:37

大哥后续呢如果调试一个APK怎么操作如果调试SO怎么操作、??
页: [1]
查看完整版本: Android逆向系列之动态调试(五)–gdb调试