
Il2CppDumper:30分钟搞懂 Unity IL2CPP 游戏逆向的完整流程【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper你是不是也遇到过这种情况:拿到一个 Unity 游戏,代码全被 IL2CPP 编译成了 C,dnSpy 之类的 C# 反编译器直接失灵,想看看游戏里有哪些类、哪些方法,却无从下手。Il2CppDumper 就是干这个的——它从游戏二进制和 global-metadata.dat 里把类、方法、字段结构还原出来,让你不用读 C 也能看懂 IL2CPP 游戏的骨架。 什么场景下你会需要它?假设你在做这几件事中的任意一件:安全研究某个手游,想知道内购校验逻辑藏在哪;学习某款游戏的架构设计;或者给游戏做 Mod,需要确认哪些 MonoBehaviour 脚本可以挂钩。只要目标是用 IL2CPP 打包的 Unity 游戏(现在主流商业手游基本都是),而你手头只有 libil2cpp.so、GameAssembly.dll 这类二进制加一个 global-metadata.dat,传统反编译路线就走不通了——IL2CPP 把 C# 转成了 C,运行时类型信息散落在二进制里。Il2CppDumper 的活儿就是把这两份文件对上,还原出完整的类型定义,相当于给逆向工作画好底图。⚡ 三步跑通:从克隆到拿到结果第一步,把项目克隆下来并编译(需要 .NET 环境):git clone https://gitcode.com/gh_mirrors/il/Il2CppDumper进入目录后执行dotnet build -c Release,编译产物在bin/Release/下。第二步,准备好两个输入文件:IL2CPP 可执行文件(Windows 上是 GameAssembly.dll,Android 上是 libil2cpp.so)和 global-metadata.dat(在游戏的 Assets 目录下)。第三步,一条命令搞定:Il2CppDumper 可执行文件 global-metadata.dat 输出目录跑完你就在输出目录里看到 DummyDll(还原出的 DLL 集合,可用 dnSpy 或 ILSpy 打开)、dump.cs(文本版类型清单)、il2cpp.h(结构体头文件)和 script.json。整个过程通常一两分钟,省掉的是手动翻二进制找类型的那大半天。 它能帮你做的事,一张表说清能力对你的价值完整还原 DLL 结构(除代码外)直接看到所有命名空间、类、方法签名,定位 MonoBehaviour 和 MonoScript 用支持 PE、ELF、ELF64、Mach-O、NSO、WASM 六种格式Windows、Android、iOS、Switch、Web 端的游戏通吃覆盖 Unity 5.3 到 2022.2老游戏新游戏都能处理生成 IDA、Ghidra、Binary Ninja 脚本把类型信息直接灌进反汇编器,函数不再是裸地址输出 il2cpp.h 结构体头文件分析 C 层结构体时字段布局一目了然支持 Android 内存 dump 的 libil2cpp.so文件被保护时也能绕过,靠配置项 ForceDump 和 NoRedirectedPointer 识别 dump 文件️ 三个高频报错,现象→原因→怎么办报错:Metadata file supplied is not valid metadata file原因:你选错了文件,或者游戏对 metadata 做了加密混淆。这不是工具的问题,文件本身不是标准格式。处理:确认你选的是 Assets 下的 global-metadata.dat 而不是别的文件;如果是 Android 游戏且设备已 root,可以配合 Zygisk 类方案在内存里抓未混淆的文件再喂给它。报错:This file may be protected原因:可执行文件本身上了保护,静态特征被改掉了。处理:用 GameGuardian 这类工具在游戏运行时从内存里 dump 出 libil2cpp.so,再用 dump 文件跑,大多数保护就绕过去了。如果 dump 文件识别指针有偏差,把 config.json 里的 NoRedirectedPointer 设为 true 再试。报错:Cant use auto mode to process file, try manual mode原因:自动定位注册函数的算法失败了,常见于版本较老的 il2cpp 二进制或选错了可执行文件(记得 PC 平台应该选 *Assembly.dll,别拿错了)。处理:先确认文件没选错;确实过不去的话,程序会提示你手动输入 CodeRegistration 和 MetadataRegistration 两个地址,在 IDA 里搜一下符号就能找到;另外 config.json 里的 ForceIl2CppVersion 可以强制指定版本号来切换解析器,对付那些版本识别不准的老游戏。 想深入一点,往哪看如果你不满足于会用,几个方向值得走:理解解析原理:核心逻辑在 Il2Cpp/Il2Cpp.cs 和 Il2Cpp/Metadata.cs,前者负责在二进制里定位代码注册表,后者负责解析 metadata 版本格式,两个文件读下来,IL2CPP 的运行时结构基本就通了。扩展文件格式支持:所有平台格式解析都集中在 ExecutableFormats/ 目录,每种格式一个类。想加一种新平台的可执行格式,照着现有类的结构走就行。定制输出:dump 哪些信息(方法、字段、属性、偏移)全由 config.json 控制,想往脚本里加新字段,改完配置再看 Outputs 目录下的生成器就知道数据流到哪一步了。配合下游工具:还原出的 DummyDll 可以直接喂给 ILSpy 看类型,script.json 则被 ida.py、ghidra.py 等脚本消费,把 Il2CppDumper 当前端、反汇编器当后端,是完整分析链路的常见组合。收尾Il2CppDumper 的定位很清晰:它不替你反编译代码,但能把 IL2CPP 游戏最难的类型地图一次性画出来,之后无论是看结构、挂脚本还是过保护,你手里都有据可依。找个你手头的 Unity IL2CPP 游戏,把两个文件丢进命令行,十五分钟后你就能翻出它全部的类清单——先试一次,比读十篇教程都管用。【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考