一、环境准备
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]
(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文件。 |