描述
来源于吾爱破解论坛正己大佬的《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩,根据大佬的技术贴,个人的学习过程
资源链接
- 工具: https://pan.baidu.com/s/1k4j_XJ3aESa48ZT_eL9VyA?pwd=52pj 提取码: 52pj
- 视频: 暂无(后续会把链接放到评论区,也可以从上个文章的视频链接观看合集
- 《安卓逆向这档事》五动态调试&Log插桩 https://www.52pojie.cn/thread-1714727-1-1.html
工具
- 教程 Demo
- MT 管理器
- 核心破解器
- adb
- XappDebug
- 算法助手
- 雷电模拟器
课程任务
- 完成关卡四
实现过程
前情提要
本次需要完成正己大佬的 教程 Dome
的第四关

本次需要提前配置完成的有 java的环境配置
、adb的环境配置
、debug的权限开启
、log日志插庄
配置 java 环境
安装 java
双击安装包,下一步,点击更改安装地址

点击 (1)
然后点击 (2)
切换到其他磁盘,选择相应的位置点击 (3)
创建文件夹



配置环境变量
在配置环境变量之前,先认识一下,下面三个变量的区别
环境变量 |
含义 |
作用 |
JAVA_HOME |
指向JDK的安装目录 |
帮助系统和其他Java程序找到JDK的安装位置,方便配置其他Java相关环境变量,如Path。 |
path |
包含系统可执行文件路径的环境变量 |
使系统在任何路径下都能识别并找到Java命令,如java、javac等。 |
classpath |
Java虚拟机搜索类和包的位置 |
指定Java虚拟机查找用户自定义类和包的路径,确保java命令能识别到所需的类。 |
配置 JAVA_HOME
首先,复制 java的安装路径
打开设置 win+i
(快捷键)搜索 环境变量


点击 新建
变量名 JAVA
值 java的安装路径


配置 path
同上面操作,不过新建对象变成编辑 Path

点击新建,粘贴 {java的安装路径}\bin
并上移到最上面

配置 Classpath
略,我也不知道我需要啥类,目前就先不配置了
验证配置完成
win+r
(快捷键) 打开运行窗口,输入 cmd

输入 java -version
查看 java 的版本信息,如果有则配置完成

配置 adb 环境
adb 又称安卓调试桥,可以让用户在电脑上操作手机,本次动态调控需要用到 adb,我会在资源包中加上 adb 文件,只需要你将其拖到自己文件夹下,进行下面的环境配置

复制 adb.exe
所在文件路径,打开环境配置,编辑 Path
,值 adb.exe所在文件的路径

验证 adb 配置完成 win+R
(快捷键) 输入 cmd
输入命令 adb version
出现版本信息,则配置成功

[!NOTE] 注意
部分人的雷电模拟器使用的是绿色版本,版本会比较低,所以部分在使用 jeb 进行动态调试的时候找不到进程有部分原因是雷电模拟器的 adb. exe 和系统配置的 adb. exe 版本不一样。
jeb 进行 debug 调试的过程中很卡
当你出现这个问题的时候,可以来看一下,打开 jeb 文件,不管你用什么方法,修改文件名也好,打开 jeb_wincon.bat
文件,注意!不要双击,他是 jeb 的启动文件

注意第 (7)
行圈起来的代码 -Xss4M -Xmx800M
代表最小分配4Mb,最大分配800Mb,如果你内存够的话,也可以最大4G,反正我的4G 太卡

开启 debug 权限
根据正己大佬的文章,开启 debug 权限的方法一共有四个分别是
- 修改 AndroidManifest. xml
- 使用XappDebug模块
- Magisk命令(重启失效)
- 刷入 MagiskHide Props Config 模块(永久有效)
方法一:修改 AndroidManifest. xml
使用 MT 管理器\NP 管理器修改 AndroidManifest.xml
文件添加下面命令并保存安装
android:debuggable="true"

方法二:使用 XappDebug 模块
首先,需要安装 XappDebug
,并在 LSP 中启用

启用模块并勾选系统框架,最后,选择右上角的×重启虚拟机

打开 XappDebug,勾选测试软件,即可

log 日志插桩
这个方法比较快捷,不需要电脑,配置 java 环境什么的,在模拟器内部就可以了
定义:Log 插桩指的是反编译 APK 文件时,在对应的 smali 文件里,添加相应的 smali 代码,将程序中的关键信息,以 log 日志的形式进行输出。
实施过程
将 日志插桩.dex
文件放入雷电模拟器的共享文件夹

在 MT 管理器中,将日志插桩拖入,软件环境,并改名为 classes2.dex

对原有的 dex 文件,使用 dex++编辑器,搜索关键词

找到最后,反应参数的位置


插入命令
invoke-static {对应寄存器}, Lcom/mtools/LogUtils;->v(Ljava/lang/Object;)V
保存,退出并安装

在算法助手中,打开 log 监听
然后启动程序

完成的对程序运行一遍,然后关闭程序,会自动回到算法助手,打开日志



实施过程
任务一:教程 Dome
第四关任务是输入正确密钥

启动 jeb 软件
将打开 jeb 文件夹双击 jeb_wincon.bat
文件

目前有两种方法,一种是直接将调试软件拖入 jeb 中,一种是在 jeb 中点击右上角 文件
-> 打开文件

然后一直确定就可以了

点击 Quick Search
,搜索关键词 密钥
,等待搜索结果,点击搜索结果

这是一份 smali 格式的代码,可以利用 MT 管理器自带的 smali指令查询
查找意思

分析代码
下面是阅读代码的过程

ChallengeFourth->check(String)Z, p0, p1
的意思:是在 ChallengeFourth
类里找到了一个叫 check
的方法,这个方法需要一个字符串作为输入,当你调用这个方法时,它会返回一个布尔值(true 或 false)。
点击进入 check
方法,右键,点击 解析

当光标在哪,解析
以后会自动跳转到对应位置

观察 java 代码,分析,找出对应位置
分析代码可以得到,密钥的固定格式为 flag{*******}
,当首字符和尾字符匹配的时候,跳转到 2A


2A
右键,解析,跳转到对应的 java
分析上下文代码意思,根据跳转跳到最后位置看看


发现在箭头指向的位置,如果是返回值,那么它的上面 Base64Utils
可以返回对应的值

将光标至于箭头位置,ctrl+b
(快捷键) 添加断点

开启 adb 调试
win+R
(快捷键)输入 cmd
命令
adb shell am start -D -n com.zj.wuaipojie/.ui.MainActivity

com.zj.wuaipojie/.ui.MainActivity
实际上就是 Activity,只不过在包名后面加上了 /
, 不同的 Activity,进入调试界面后会自动跳转该 Activity
[!NOTE] 注意
- 部分人输入完命令后,模拟器会自动重启,可能会卡住,手动重启再输入命令即可
- 如果没有进入这个界面,卡在中间,再输入一次命令即可
输入命令后会进入下面这个界面

开启调试
回到 jeb 打开工具栏的调试按钮

确保设备,进程都存在,然后点击 附上

将新出现的界面调整为 VM/局部变量

回到模拟器,等待进入程序

在密钥区输入 flag{***}
, 点击验证,没有任何反应是正常的,如果提示密钥错误,那么固定格式是错的,点击完验证,回到 jeb

首先点击 进入
,进入 encodeToString
方法中,然后点击 跳过
移动到 p1


再点击 进入
,移动到返回值,会观察到局部变量已经出现了一个字符串,复制字符串,这个就是密钥

验证结果

总结
我想问问还有没有其他的动态调试软件,jeb 把我卡飞了