原创 首页 逆向

安卓动态调试进阶

LinJHS 0

上篇用的是 apktool 加 Android Studio,这篇换雷电模拟器和 Jeb。本文记录了安卓动调以及 Log 插桩。

环境准备

  • 雷电 9 模拟器

  • Jeb

雷电 9 自带 root,后面 LSPosed 那步用得上,记得开着。adb devices 能看到模拟器设备,说明 adb 连接正常。apk 装进模拟器,直接拖进去或者 adb install 都行。Jeb 用来打开 apk,断点也下在它里面。

修改 debug 权限

要动调,得先让应用变成可调试的。两种方法选一个就行。

方法一

在 AndroidManifest.xml 中修改 android:debuggable="true"。解包改属性再打包签名的整套流程上篇写过,这里不重复。

方法二

XappDebug 模块 hook 对应的 APP。它是个 Xposed 模块,在 LSPosed 里启用后把目标 APP 勾上,不用改包。

debug 模式启动

具体包名以及类名可以通过 AndroidManifest.xml 进行查看,一般找带 LAUNCHER 标记的那个 activity。

adb shell am start -D -n com.example.application/.ui.MainActivity

adb shell am start -D -n 包名/类名

  • -n 表示启动一个activity

  • -D 表示将应用设置为可调试模式

命令敲完应用会启动,但界面会停在 Waiting for Debugger(等待调试器)的提示上,这是在等调试器连过来,不是卡死了。

接着直接用 Jeb 链接即可使用。Jeb 里打开 apk,把调试器挂到模拟器里跑着的这个进程,挂上之后应用就放行了。之后就是正常的单步调试,看变量、看流程。断点相关的快捷键:

  • Ctrl+B 下断点

  • F6 进入方法

  • F7 从方法中跳出来

  • R 运行到光标处

Log 插桩

使用 MT 将日志插桩的 dex 文件(详见参考资料 1)添加进 apk 中(可以重命名为 classes2.dex),加完记得重新签名,不然装不上。

在想看值的 smali 位置插上这一句,把那个位置寄存器里的东西传进去:

invoke-static {对应寄存器}, Lcom/mtools/LogUtils;->v(Ljava/lang/Object;)V

接着打开 LSPosed,算法助手勾选上目标应用,然后再在算法助手里选中目标应用,打开 Log 捕获。应用跑到插桩的位置,算法助手里就能看到打出来的日志。


参考资料:

  1. 《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩 https://www.52pojie.cn/thread-1714727-1-1.html

分享
如果这篇文章帮到你,可以请我喝一杯茶。

微信扫码打开

请我喝杯茶

如果这篇文章帮到你,可以请我喝一杯茶。

微信收款码
在商城请我一杯