安卓逆向 动态调试与Log插桩

admin 2025年3月18日21:07:07评论5 views字数 2878阅读9分35秒阅读模式

点击查看每日文末留言包邮送书活动规则

  1. 前情提要

本次需要完成正己大佬的 教程 Dome 的第四关安卓逆向  动态调试与Log插桩

本次需要提前配置完成的有 java的环境配置adb的环境配置debug的权限开启log日志插庄

配置 java 环境
安装 java

双击安装包,下一步,点击更改安装地址安卓逆向  动态调试与Log插桩点击 (1) 然后点击 (2) 切换到其他磁盘,选择相应的位置点击 (3) 创建文件夹安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩

配置环境变量

在配置环境变量之前,先认识一下,下面三个变量的区别

环境变量
含义
作用
JAVA_HOME
指向JDK的安装目录
帮助系统和其他Java程序找到JDK的安装位置,方便配置其他Java相关环境变量,如Path。
path
包含系统可执行文件路径的环境变量
使系统在任何路径下都能识别并找到Java命令,如java、javac等。
classpath
Java虚拟机搜索类和包的位置
指定Java虚拟机查找用户自定义类和包的路径,确保java命令能识别到所需的类。
配置 JAVA_HOME

首先,复制 java的安装路径打开设置  win+i(快捷键)搜索环境变量安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩点击新建变量名JAVAjava的安装路径安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩

配置 path

同上面操作,不过新建对象变成编辑 Path安卓逆向  动态调试与Log插桩点击新建,粘贴 {java的安装路径}bin 并上移到最上面安卓逆向  动态调试与Log插桩

配置 Classpath

略,我也不知道我需要啥类,目前就先不配置了

验证配置完成

win+r (快捷键) 打开运行窗口,输入 cmd安卓逆向  动态调试与Log插桩输入 java -version 查看 java 的版本信息,如果有则配置完成安卓逆向  动态调试与Log插桩

配置 adb 环境

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

复制 adb.exe 所在文件路径,打开环境配置,编辑 Path,值 adb.exe所在文件的路径安卓逆向  动态调试与Log插桩

验证 adb 配置完成 win+R (快捷键) 输入 cmd输入命令 adb version 出现版本信息,则配置成功安卓逆向  动态调试与Log插桩

[!NOTE] 注意

部分人的雷电模拟器使用的是绿色版本,版本会比较低,所以部分在使用 jeb 进行动态调试的时候找不到进程有部分原因是雷电模拟器的 adb. exe 和系统配置的 adb. exe 版本不一样。

jeb 进行 debug 调试的过程中很卡

当你出现这个问题的时候,可以来看一下,打开 jeb 文件,不管你用什么方法,修改文件名也好,打开 jeb_wincon.bat 文件,注意!不要双击,他是 jeb 的启动文件安卓逆向  动态调试与Log插桩

注意第 (7) 行圈起来的代码 -Xss4M -Xmx800M 代表最小分配4Mb,最大分配800Mb,如果你内存够的话,也可以最大4G,反正我的4G 太卡安卓逆向  动态调试与Log插桩

开启 debug 权限

根据正己大佬的文章,开启 debug 权限的方法一共有四个分别是

  1. 修改 AndroidManifest. xml
  2. 使用XappDebug模块
  3. Magisk命令(重启失效)
  4. 刷入 MagiskHide Props Config 模块(永久有效)

    方法一:修改 AndroidManifest. xml

使用 MT 管理器NP 管理器修改 AndroidManifest.xml 文件添加下面命令并保存安装

 复制代码 隐藏代码android:debuggable="true"
安卓逆向  动态调试与Log插桩
方法二:使用 XappDebug 模块

首先,需要安装 XappDebug,并在 LSP 中启用安卓逆向  动态调试与Log插桩启用模块并勾选系统框架,最后,选择右上角的×重启虚拟机安卓逆向  动态调试与Log插桩

打开 XappDebug,勾选测试软件,即可安卓逆向  动态调试与Log插桩

log 日志插桩

这个方法比较快捷,不需要电脑,配置 java 环境什么的,在模拟器内部就可以了

定义:Log 插桩指的是反编译 APK 文件时,在对应的 smali 文件里,添加相应的 smali 代码,将程序中的关键信息,以 log 日志的形式进行输出。

实施过程

将 日志插桩.dex 文件放入雷电模拟器的共享文件夹安卓逆向  动态调试与Log插桩

在 MT 管理器中,将日志插桩拖入,软件环境,并改名为 classes2.dex安卓逆向  动态调试与Log插桩

对原有的 dex 文件,使用 dex++编辑器,搜索关键词安卓逆向  动态调试与Log插桩找到最后,反应参数的位置安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩

插入命令

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

保存,退出并安装安卓逆向  动态调试与Log插桩

在算法助手中,打开 log 监听 然后启动程序安卓逆向  动态调试与Log插桩

完成的对程序运行一遍,然后关闭程序,会自动回到算法助手,打开日志安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩

实施过程

任务一:教程 Dome

第四关任务是输入正确密钥安卓逆向  动态调试与Log插桩

启动 jeb 软件

将打开 jeb 文件夹双击 jeb_wincon.bat 文件安卓逆向  动态调试与Log插桩

目前有两种方法,一种是直接将调试软件拖入 jeb 中,一种是在 jeb 中点击右上角 文件 -> 打开文件安卓逆向  动态调试与Log插桩

然后一直确定就可以了安卓逆向  动态调试与Log插桩

点击 Quick Search,搜索关键词 密钥,等待搜索结果,点击搜索结果安卓逆向  动态调试与Log插桩

这是一份 smali 格式的代码,可以利用 MT 管理器自带的 smali指令查询 查找意思安卓逆向  动态调试与Log插桩

分析代码

下面是阅读代码的过程

安卓逆向  动态调试与Log插桩

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

点击进入 check 方法,右键,点击 解析安卓逆向  动态调试与Log插桩

当光标在哪,解析 以后会自动跳转到对应位置安卓逆向  动态调试与Log插桩

观察 java 代码,分析,找出对应位置分析代码可以得到,密钥的固定格式为 flag{*******},当首字符和尾字符匹配的时候,跳转到 2A安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩

2A右键,解析,跳转到对应的 java

分析上下文代码意思,根据跳转跳到最后位置看看安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩

发现在箭头指向的位置,如果是返回值,那么它的上面 Base64Utils 可以返回对应的值安卓逆向  动态调试与Log插桩

将光标至于箭头位置,ctrl+b (快捷键) 添加断点安卓逆向  动态调试与Log插桩

开启 adb 调试

win+R (快捷键)输入 cmd 命令

 复制代码 隐藏代码adb shell am start -D -n com.zj.wuaipojie/.ui.MainActivity
安卓逆向  动态调试与Log插桩

com.zj.wuaipojie/.ui.MainActivity 实际上就是 Activity,只不过在包名后面加上了 /, 不同的 Activity,进入调试界面后会自动跳转该 Activity

[!NOTE] 注意

  1. 部分人输入完命令后,模拟器会自动重启,可能会卡住,手动重启再输入命令即可
  2. 如果没有进入这个界面,卡在中间,再输入一次命令即可

输入命令后会进入下面这个界面安卓逆向  动态调试与Log插桩

开启调试

回到 jeb 打开工具栏的调试按钮安卓逆向  动态调试与Log插桩

确保设备,进程都存在,然后点击 附上安卓逆向  动态调试与Log插桩

将新出现的界面调整为 VM/局部变量安卓逆向  动态调试与Log插桩

回到模拟器,等待进入程序安卓逆向  动态调试与Log插桩

在密钥区输入 flag{***}, 点击验证,没有任何反应是正常的,如果提示密钥错误,那么固定格式是错的,点击完验证,回到 jeb安卓逆向  动态调试与Log插桩

首先点击 进入,进入 encodeToString 方法中,然后点击 跳过 移动到 p1安卓逆向  动态调试与Log插桩安卓逆向  动态调试与Log插桩

再点击 进入,移动到返回值,会观察到局部变量已经出现了一个字符串,复制字符串,这个就是密钥安卓逆向  动态调试与Log插桩

验证结果
安卓逆向  动态调试与Log插桩

· 今 日 推 荐 ·

安卓逆向  动态调试与Log插桩

本文内容来自吾爱破解,如有侵权请联系删除

原文始发于微信公众号(逆向有你):安卓逆向 -- 动态调试与Log插桩

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月18日21:07:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向 动态调试与Log插桩https://cn-sec.com/archives/3852765.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息