MT管理器逆向实战:手把手教你解锁内购01
免责声明:本文仅供技术交流与学习使用,请勿用于非法用途。请支持正版软件,尊重开发者劳动成果。
本教程将基于具体案例(倒数日 App),手把手教你如何使用 MT管理器 进行简单的安卓逆向,通过修改 Smali 代码实现解锁应用内购功能。
🛠️ 准备工作
- 工具:MT管理器(推荐使用会员版或拥有相应功能的版本)
- 目标应用:需要解锁内购的 App(本例演示为“倒数日”)
- 基础知识:对安卓 APK 结构和 Smali 语法有初步了解
链接:https://pan.quark.cn/s/94410e0d5a1f
提取码:GQHG
📖 实战步骤
第一步:提取与预处理
首先,我们需要获取目标应用的安装包,并去除其签名校验,以便后续修改后的安装包能正常安装。
- 打开 MT管理器,找到目标应用,点击提取安装包。
- 点击提取后的 APK,选择功能去除签名校验。这一步是为了防止应用检测到被修改后无法运行或安装。

第二步:初步分析与定位
安装去除签名后的 APK,打开应用进行测试,寻找突破口。
- 复现流程:进入应用,点击购买/内购选项。
- 观察现象:观察弹出的提示。例如,本例中尝试购买时跳转支付失败,应用内弹出提示“购买失败”。
- 锁定关键词:记住这个关键提示语“购买失败”,这将是我们查找代码的线索。

第三步:搜索资源 ID (ARSC)
我们需要找到“购买失败”这个字符串对应的资源 ID,以便在代码中追踪它的调用位置。
-
回到 MT管理器,点击查看 APK 文件。

-
打开 resources.arsc 文件,选择 ARS编辑器。
-
点击搜索资源值,输入关键词“购买失败”。

-
搜索结果中会显示该字符串的详细信息,长按复制其资源 ID(通常是一串十六进制数字,如
0x7f...)。
第四步:定位关键代码 (DEX)
拿到 ID 后,我们需要去 DEX 文件(代码逻辑)中查找哪里用到了这个 ID。
- 退出 ARSC 编辑器,在 APK 文件列表中点击 classes.dex(如果有多个 dex,建议全选)。
- 选择 Dex编辑器++。
- 发起搜索:
- 搜索内容:粘贴刚才复制的资源 ID。
- 搜索类型:选择 整数。
- 搜索范围:勾选所有选项。
- 搜索结果通常会有几个匹配项。根据经验,我们需要寻找代码逻辑中的引用,而不是资源定义。
- 点击进入搜索结果,你会看到类似
const v0, 0x7f...的指令。


第五步:二次搜索 (追踪变量)
在第四步的搜索结果中,如果发现匹配项主要是 .field 相关的代码(即变量定义),这说明我们找到的是资源 ID 被赋值给某个变量的地方,而不是直接被使用的逻辑判断处。
-
复制变量名:点击进入包含
.field的搜索结果,找到该资源 ID 对应的变量名(通常在put-static或sput指令附近)。
-
再次搜索:
- 搜索内容:粘贴刚才复制的变量名。
- 搜索类型:选择 代码。
- 搜索范围:勾选所有选项。
-
定位逻辑:这次搜索的结果应该会带我们找到真正引用该变量进行逻辑判断的地方。
第六步:分析与修改逻辑 (第一次尝试)
找到引用该 ID(或变量)的代码后,我们需要分析上下文逻辑。
-
向上追溯:在引用“购买失败”的代码附近,通常会有判断跳转语句(如
if-eqz,if-nez等)。
-
逻辑分析:
- 系统通常会根据某个条件判断是否购买成功。
- 如果失败,跳转到显示“购买失败”的代码块。
- 如果成功,则执行另一段逻辑。
-
修改方法(注释大法):
- 找到导致跳转到失败分支的判断语句。
- 直接将其注释掉(在该行前加
#或删除该行)。 - 这样程序就不会跳转到失败流程,而是直接向下执行(通常是成功流程)。
保存并测试:
保存修改,更新 APK 并签名安装。
再次尝试购买,发现弹窗提示“购买成功”!
第七步:解决后续校验 (二次修改)
在本例中,虽然提示了购买成功,但紧接着弹出了“网络连接失败”的提示,说明还有第二层校验。我们需要继续分析。
-
再次分析:回到刚才修改的地方,或者根据“网络连接失败”关键词重新搜索定位。
-
发现新逻辑:在代码中发现了另一个判断逻辑(例如
cond_42标签附近)。- 代码逻辑大致为:
if-eqz v1, :cond_42(如果 v1 等于 0,跳转到 cond_42)。 :cond_42下方的代码正是提示“网络连接失败”。
.line 61 if-eqz v1, :cond_42 .line 63 invoke-static {v3, v0}, Lcom/clover/daysmatter/ooOoo00;->OooO0oO(Landroid/content/Context;Z)V .line 66 goto :goto_50 .line 67 :cond_42 const v1, 0x7f1200a2 - 代码逻辑大致为:
-
修改策略:
- 同样可以使用注释大法,注释掉
if-eqz跳转。 - 或者使用
goto指令无条件跳转到成功逻辑的标签。
- 同样可以使用注释大法,注释掉
-
目标:确保代码逻辑能顺利流向代表“购买成功”的代码块。

第八步:最终验证
- 保存所有修改,退出编辑器并自动更新 APK。
- 安装修改后的 APK。
- 再次点击购买,确认:
- ✅ 提示“购买成功”。
- ✅ 没有后续错误提示。
- ✅ 功能实际已解锁。

💡 总结
逆向破解的核心在于思路:
- 定位:通过界面提示语(String)找到资源 ID。
- 追踪:通过资源 ID 找到调用代码(DEX)。
- 分析:看懂基本的 Smali 流程控制(跳转、判断)。
- 修改:通过修改判断条件或强制跳转,改变执行流向。
希望这篇教程能帮你入门 MT 管理器的逆向操作!
注:本文灵感来源于 B站 UP 主 Mod_李羽 的教程视频。











