a1cnore/HackedGlory
GitHub: a1cnore/HackedGlory
针对 Vainglory 手游最终版本的逆向工程研究归档,涵盖二进制静态分析、协议解密还原、MITM 流量拦截、UI 解锁恢复和游戏资产提取的完整工具链与详细技术文档。
Stars: 22 | Forks: 2
# HackedGlory
HackedGlory 是一个针对最终版 Vainglory 客户端的逆向工程归档与工具工作区,主要关注 **GameKindred v4.13.4 / build 147219**。它结合了 Ghidra 项目、反编译输出、静态分析报告、运行时拦截、协议解码、资产提取,以及用于 iOS 和 Android 实验的定向解锁库。
社区更新:[EU Discord](https://discord.gg/5Y3q7cTH)
这是一个研究仓库,而不是一个完善的 mod 发行版。大多数结果之所以有用,是因为它们解释了社区版客户端是如何被门控的、二进制文件中仍然存在什么,以及在受控测试条件下哪些部分可以被安全地检查或重新启用。
## 目录
- [状态概览](#status-at-a-glance)
- [从哪里开始](#where-to-start)
- [已恢复的界面](#restored-surfaces)
- [主要发现](#major-findings)
- [Ghidra 与反编译输出](#ghidra-and-decompiled-output)
- [运行时 MITM 与比赛解码](#runtime-mitm-and-match-decoding)
- [解锁库](#unlock-libraries)
- [资产与平衡数据](#assets-and-balance-data)
- [仓库布局](#repository-layout)
- [常见工作流](#common-workflows)
- [工具与环境](#tooling-and-environment)
- [开放工作](#open-work)
- [许可证](#license)
## 状态概览
| 区域 | 当前状态 | 主要入口点 |
| --- | --- | --- |
| CE 特性门控 | 主门控映射到 92 个独立函数中的 164 条 BL 指令。直接全局修补是不安全的;定向 Hook 是有效途径。 | [`reports/ce_gate_analysis.md`](reports/ce_gate_analysis.md) |
| iOS 解锁工作 | 侧边栏/个人资料/排位/社交/排行榜界面可以通过 `vg_unlock.dylib` 强制显示以供检查。 | [`mitm/vg_unlock/`](mitm/vg_unlock/) |
| Android 解锁工作 | Loader-shim 注入是受支持的应用包修补方式。控制构建默认是安全的;补丁组必须有意启用。面向一致性的 Hook 集已在主要的 Honor Android 16 目标上验证,剩余的偏移量工作已被记录。 | [`mitm/vg_unlock_android/README.md`](mitm/vg_unlock_android/README.md),[`scripts/android/README.md`](scripts/android/README.md) |
| 平台 JSON-RPC | 认证/会话/个人资料/社交/队伍/公会/物品栏/内容界面是从静态字符串、Ghidra 跟踪和 MITM 捕获中推断出来的。 | [`reports/vainglory_static_report.md`](reports/vainglory_static_report.md),[`reports/method_schema_sheet.md`](reports/method_schema_sheet.md),[`reports/offline_protocol_surface.md`](reports/offline_protocol_surface.md) |
| 比赛内协议 | TCP 成帧、Blowfish ECB 和每场比赛的密钥派生已被解码。更高级别的计分板重放解码正在积极进行基准测试。 | [`reports/protocol_decryption_writeup.md`](reports/protocol_decryption_writeup.md),[`mitm/match_decryption/`](mitm/match_decryption/) |
| 比赛重放语义 | 最新记录的自动研究指标解码了 7 场完整比赛中有用的计分板状态:7/7 的获胜信号,42/42 活跃玩家的金币和 XP,41/42 的死亡时间线,27 名玩家的击杀数,35 名玩家的升级情况,以及 41 名玩家的重放就绪数据行。 | [`mitm/match_decryption/autoresearch.md`](mitm/match_decryption/autoresearch.md) |
| CFF0 平衡数据 | 客户端侧的游戏玩法定义已被定位、解密,并提取到生成的平衡数据库中。 | [`reports/cff0_decryption_and_balance_extraction.md`](reports/cff0_decryption_and_balance_extraction.md),[`reports/generated/vainglory_balance_db.json`](reports/generated/vainglory_balance_db.json) |
| 资产和网格 | RSC0/CFF0 资产结构已被记录。纹理和网格提取工具已经存在,并提交了许多提取的 OBJ/WebP 产物以供检查。 | [`reports/3d_mesh_extraction.md`](reports/3d_mesh_extraction.md),[`reports/hero_assets_inventory.md`](reports/hero_assets_inventory.md) |
| 反编译语料库 | 已提交 iOS `GameKindred` 和 Android `libGameKindred.so` 的 Ghidra 项目及生成的类 C 输出,包括结构化的分割输出。 | [`ghidra_projects/`](ghidra_projects/),[`ghidra_scripts/`](ghidra_scripts/) |
## 从哪里开始
请先阅读顶级报告,然后再深入到具体的工具目录。
- 关于“CE 禁用了什么?”,请从 [`reports/ce_gate_analysis.md`](reports/ce_gate_analysis.md) 开始。
- 关于“比赛内协议是如何解密的?”,请从 [`reports/protocol_decryption_writeup.md`](reports/protocol_decryption_writeup.md) 开始。
- 关于“客户端可以向后端请求什么?”,请从 [`reports/method_schema_sheet.md`](reports/method_schema_sheet.md) 和 [`reports/offline_protocol_surface.md`](reports/offline_protocol_surface.md) 开始。
- 关于“我如何捕获或检查流量?”,请从 [`mitm/README.md`](mitm/README.md) 开始。
- 关于“我如何检查类似重放的比赛状态?”,请从 [`mitm/match_decryption/autoresearch.md`](mitm/match_decryption/autoresearch.md) 开始。
- 关于“英雄属性、物品、天赋和游戏模式在哪里?”,请从 [`reports/cff0_decryption_and_balance_extraction.md`](reports/cff0_decryption_and_balance_extraction.md) 开始。
- 关于“Android 注入的状态是什么?”,请从 [`mitm/vg_unlock_android/README.md`](mitm/vg_unlock_android/README.md) 和 [`scripts/android/README.md`](scripts/android/README.md) 开始。
较早的笔记可能保留了早期的假设。当文档发生冲突时,请优先使用上面列出的较新的定向报告,而不是广泛的清单文件。
## 已恢复的界面
当前的解锁工作可以显示原版社区版隐藏或抑制的 UI。这些截图是检查证据,并不意味着每个恢复的面板都完全有实时的服务器数据支撑。
/packets.bin
```
使用同一目录中的仪表板助手进行更高级别的比赛状态检查。
### 构建 Android 解锁产物
默认控制构建:
```
cd mitm/vg_unlock_android
./build.sh
```
定向测试构建:
```
cd mitm/vg_unlock_android
./build.sh --experimental-hooks --parser-patches --profile-redirects --guest-bypass
```
通过 loader shim 修补 XAPK:
```
python3 mitm/vg_unlock_android/patch_xapk.py /path/to/Vainglory_4.13.4.xapk --sign-debug
```
在启用补丁组之前,请阅读 [`mitm/vg_unlock_android/README.md`](mitm/vg_unlock_android/README.md)。
### 提取平衡数据
```
python3 scripts/decrypt_cff0.py
python3 scripts/extract_balance_db.py
```
检查 [`reports/generated/`](reports/generated/) 下的生成文件。
## 工具与环境
常用工具:
- macOS,用于 iOS Mach-O 分析和现有的本地 Ghidra 工作流
- Python 3
- Ghidra 12.x
- mitmproxy / `mitmdump`
- Frida,用于动态插桩助手
- Android NDK,用于 `mitm/vg_unlock_android`
- 受控的 iOS 虚拟机/设备和 Android 测试设备,用于运行时验证
整个仓库没有单一的引导命令。项目按研究层组织:
- `scripts/`、`ghidra_scripts/`、`ghidra_projects/` 和 `reports/` 中的静态分析
- `mitm/` 中的运行时捕获和验证
- `mitm/match_decryption/` 中的比赛内协议解码
- `mitm/vg_unlock/` 和 `mitm/vg_unlock_android/` 中特定于平台的解锁实验
- 通过 `scripts/` 和 `reports/generated/` 进行的资产和平衡提取
## 许可证
本项目基于 [MIT 许可证](https://opensource.org/licenses/MIT) 发布。
特此免费授予任何获得本软件副本和相关文档文件的人不受限制地处置本软件的权利,包括不受限制地使用、复制、修改、合并、发布、分发、再授权和/或出售本软件副本的权利,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。
标签:Android Hook, API接口, CSV导出, C++反编译, Docker支持, dylib注入, Frida, Ghidra, HackedGlory, iOS越狱开发, JS文件枚举, MITM, Vainglory, 中间人攻击, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 内存修补, 协议分析, 客户端加密, 开源安全工具, 数据可视化, 权限提升, 游戏安全, 游戏客户端修改, 游戏私服, 特征门控绕过, 目录枚举, 移动安全, 网络协议解码, 资产提取, 逆向工程, 逆向工程平台, 防御绕过, 静态分析