目录
一、核心原理
二、Dump 的主要分类
1. 按目标对象
2. 按平台
3. 按时机
三、主流工具与适用场景
1. Windows 平台
2. Android 平台(Unity IL2CPP 为主)
3. iOS 平台
四、完整实战流程(以 Unity IL2CPP 安卓游戏为例)
1. 环境准备
2. 动态 Dump
3. 符号还原与分析
4. 后续分析
五、反 Dump 对抗与绕过
六、常见问题与注意事项
总结
游戏逆向中的Dump(转储),核心是把游戏进程内存镜像、关键二进制或资源数据完整导出,用于后续脱壳、还原符号、分析逻辑或提取资源,是逆向的第一步。下面从原理、分类、工具、流程、反 Dump 对抗与实战要点六方面详细说明。
一、核心原理
游戏发行版常加壳(VMProtect、Themida、UPX)或加密,磁盘上的 EXE/so 是加密壳,真实代码仅在运行时解密到内存。Dump 本质是:
- 运行时捕获:等壳完成解密、游戏本体在内存展开后,读取进程虚拟内存。
- 数据完整复制:导出内存中的代码段、数据段、堆、栈及模块信息,生成可分析的文件(如 PE、ELF、dmp)。
- 符号与结构还原:对 Unity IL2CPP 等引擎,Dump 元数据(如 global-metadata.dat)以还原类 / 函数名。
二、Dump 的主要分类
1. 按目标对象
- 进程内存 Dump:导出整个进程内存(.dmp/.bin),用于脱壳、修复 IAT、反调试分析。
- 模块 Dump:仅 Dump 指定模块(如 libil2cpp.so、game.exe),体积小、聚焦核心逻辑。
- 引擎元数据 Dump(Unity IL2CPP):Dump global-metadata.dat,配合 libil2cpp.so 还原 C# 类 / 函数 / 字符串。
- 资源 Dump:提取纹理、模型、音效等(如 Ninja Ripper 捕获显存资源)。
2. 按平台
- PC(Windows):EXE/DLL,PE 结构,工具 X64DBG、Scylla、Process Hacker。
- Android:APK/so(ELF),工具 Zygisk-Il2CppDumper、Frida、IDA Pro。
- iOS:Mach-O,工具 frida-ios-dump、lldb。
3. 按时机
- 静态 Dump:未运行时直接读磁盘文件,仅适用于未加密 / 未加壳程序。
- 动态 Dump(主流):运行时内存捕获,绕过壳与加密,99% 商业游戏必须用动态 Dump。
三、主流工具与适用场景
1. Windows 平台
- X64DBG + Scylla:调试附加→内存 Dump→自动修复 IAT / 重定向表,脱壳首选。
- Process Hacker:图形化进程管理,右键 Dump 进程 / 模块,快速获取内存镜像。
- Volatility:内存取证,分析 dmp 文件,适合对抗强反调试场景。
2. Android 平台(Unity IL2CPP 为主)
3. iOS 平台
四、完整实战流程(以 Unity IL2CPP 安卓游戏为例)
1. 环境准备
2. 动态 Dump
3. 符号还原与分析
五、反 Dump 对抗与绕过
现代游戏(如《原神》《王者荣耀》)集成反 Dump 机制:
六、常见问题与注意事项
总结
Dump 是游戏逆向的 “开门钥匙”,核心是运行时内存捕获 + 符号还原。PC 端用 X64DBG/Scylla,安卓 IL2CPP 用 Zygisk-Il2CppDumper,iOS 用 frida-ios-dump。掌握 Dump 后,可进一步做逻辑分析、内存修改、Hook 开发等逆向操作。
Zygisk-Il2CppDumper:Magisk 模块,系统级注入,绕过反调试 / 加密,动态 Dump libil2cpp.so 与 global-metadata.dat,生成符号文件(.cs/.h)。
Frida + frida-il2cpp-bridge:脚本化 Dump,适合临时抓取函数偏移与内存数据。
IDA Pro + Hex-Rays:静态分析 Dump 后的 so 文件,查看伪代码与汇编。
- frida-ios-dump:一键砸壳 + Dump Mach-O,解密 AppStore 加密 binary。
- lldb:调试附加,memory read 导出内存,适合手动精准 Dump。
- 设备:已 Root / 安装 Magisk 的安卓机(Android 8–12 兼容性最佳)。
- 工具:Zygisk-Il2CppDumper、IDA Pro、MT 管理器。
- 安装 Zygisk-Il2CppDumper 模块,重启手机激活。
- 启动目标游戏,模块自动捕获 libil2cpp.so 与 global-metadata.dat。
- 生成 Dump 文件(含 dump.cs、dump.h、libil2cpp.so),导出到电脑。
- 用 Il2CppDumper 工具加载 dump.cs 与 libil2cpp.so,生成带类名 / 函数名的 IDA 脚本。
- IDA Pro 导入 so 文件,运行脚本还原符号,查看 C# 逻辑对应的 C++ 伪代码。
- 定位关键函数(如伤害计算、金币修改)。
- 内存搜索 / 断点调试,修改参数或 Hook 函数。
- 反调试检测:检测调试器(x64dbg/frida)附加,直接退出进程。
- 绕过:用隐藏调试器(如 X64DBG 隐藏插件、hluda-server)、Zygisk 注入。
- 内存加密:关键代码段运行时动态加密,仅执行时解密。
- 绕过:执行瞬间 Dump(断点在代码段执行时)、硬件断点捕获解密时机。
- 模块校验:检测 libil2cpp.so/global-metadata.dat 是否被修改。
- 绕过:内存原位 Dump(不修改原始文件)、修复校验值。
- Dump 失败:多为反调试 / 加密,换用 Zygisk/Frida 隐藏版,或调整 Dump 时机。
- 符号错乱:global-metadata.dat 被魔改,用cpp2il容错解析,或手动修复元数据结构。
- 法律风险:Dump 仅用于个人学习研究,禁止用于破解、外挂、商业用途,否则涉嫌侵权与违法。