ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Il2CppDumper 使用指南:用两个文件逆向 Unity IL2CPP 游戏

Il2CppDumper 使用指南:用两个文件逆向 Unity IL2CPP 游戏 Il2CppDumper 使用指南用两个文件逆向 Unity IL2CPP 游戏【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper你手里有一款 Unity 游戏C# 代码已被 IL2CPP 编译成 C。你拿到的只有GameAssembly.dll或libil2cpp.so传统 C# 反编译器对这种二进制无能为力——类名、方法、字段信息全都藏在二进制和元数据里。Il2CppDumper 就是为这种情况准备的逆向工具给它 IL2CPP 可执行文件和global-metadata.dat它能还原全部类型、方法签名和字段定义不含方法体代码并顺带生成可直接导入 IDA、Ghidra、Binary Ninja 的脚本和结构体头文件。它支持 PE、ELF、ELF64、Mach-O、NSO、WASM 六种可执行格式覆盖 Windows、Android、iOS/macOS、Switch 和 Web 平台兼容 Unity 5.3 至 2022.2 的元数据版本新版 il2cpp 支持也在持续跟进。环境准备与安装你只需要 .NET 6.0 或 8.0 运行时源码用 CLI 直接编译没有额外的依赖步骤git clone https://gitcode.com/gh_mirrors/il/Il2CppDumper cd Il2CppDumper dotnet build -c Release编译完成后可执行文件位于Il2CppDumper/bin/Release/net8.0/目录。在 Windows 上双击它可进入交互模式弹出文件选择框在 Linux/macOS 上则走命令行。第一次完整运行输入两个文件得到一个输出目录先记住一条命令行格式后面所有场景都从它展开Il2CppDumper.exe 可执行文件 global-metadata.dat 输出目录以 Windows 版游戏为例三个参数分别是什么可执行文件——各平台对应的文件不一样Windows 是GameAssembly.dll或*Assembly.dll注意不是游戏主程序 exeAndroid 是libil2cpp.soiOS/macOS 是 UnityFramework 内的二进制Switch 是 NSO 格式的主程序文件Web 是.wasm文件。元数据文件——global-metadata.dat通常在游戏目录的Data/Managed/下Android 在il2cpp_data/下。输出目录——省略则输出到程序当前目录。程序会根据文件头自动识别格式不需要你手动声明。如果它判断出你喂的是一个内存 dump 文件比如 ELF会提示你输入内存基地址交互模式下 Mach-O Fat 二进制还会让你选 32 位或 64 位。运行完成后输出目录里有什么跑完之后按使用顺序看这几组文件比孤立地记住文件名更容易上手DummyDll/还原出的程序集文件夹用 dnSpy 或 ILSpy 打开能逐类查看类型、方法、字段和特性。方法体是空的只有签名。这个文件夹也是提取MonoBehaviour/MonoScript引用的来源资产提取工具常依赖它。dump.cs全部元数据的文本版方法偏移、字段偏移都在里面适合直接grep定位目标方法。il2cpp.hC 结构体头文件描述全部类的内存布局。script.json ida.py / ghidra.py / Il2CppBinaryNinja/把script.json配合对应脚本导入逆向工具方法地址会自动命名、类型自动应用。WASM 目标用ghidra_wasm.py。ida_with_struct.py / ghidra_with_struct.py在 IDA 或 Ghidra 里读取il2cpp.h并套用结构体信息。stringliteral.json全部字符串字面量清单搜字符串定位代码时很实用。报错了怎么办ERROR: Metadata file supplied is not valid metadata file.说明global-metadata.dat选错了或者游戏对它做了加密混淆。先确认文件本身是否拿对如果文件确实被加密这个程序不负责解密去找未加密的来源或对应的解密方案。Android 场景下有 root 设备可以直接从内存里取未加密的文件来绕过。ERROR: This file may be protected.可执行文件带保护。用 GameGuardian 一类的工具从游戏内存中 dump 出libil2cpp.so再交给 Il2CppDumper 加载按提示输入基地址可绕过大部分保护。已 root 的设备同样有专门方案可绕几乎全部保护。ERROR: Cant use auto mode to process file, try manual mode.自动搜索注册入口失败了。最常见的原因是选错可执行文件——Windows 平台必须是*Assembly.dll。若确认文件没错程序接下来会提示手动输入 CodeRegistration 和 MetadataRegistration 两个地址通过其他方式调试器断点等拿到后填入即可继续。从能用到用好 所有行为开关都在可执行文件旁边的config.json里日常最常动的是三组强制版本低版本 il2cpp 的二进制可能选不对解析器把ForceIl2CppVersion设为true再用ForceVersion指定版本号例如 Android v20 的二进制设成 16 才能正常工作。dump 文件加载内存 dump 时把ForceDump设为true强制识别部分设备 dump 出的文件还需NoRedirectedPointer为true把指针当未重定向处理。输出控制DumpMethod、DumpField、DumpMethodOffset等决定 dump.cs 里输出哪些信息GenerateDummyDll、GenerateStruct、GenerateScript控制对应产物是否生成DummyDllAddToken控制是否附带 token。批量处理一批游戏套一层循环就行for game in ./games/*; do ./Il2CppDumper $game/GameAssembly.dll \ $game/Data/Managed/global-metadata.dat \ ./output/$(basename $game) done谁适合用它安全研究员先还原类型与方法全貌再回 IDA 定位验证、反作弊相关逻辑。游戏机制学习者用 ILSpy 浏览 DummyDll看类层次和方法签名理解一款游戏的整体结构。资产工具链用户从 DummyDll 提取MonoBehaviour/MonoScript的引用信息喂给资源提取工具。边界与提醒⚠️ 工具的 il2cpp 版本必须与目标游戏匹配解析不到关键数据时优先尝试ForceVersion参数。另外请只把逆向结果用于安全研究、学习和个人用途遵守相关平台的服务条款分析前备份原始文件。下一步当你能走通两个文件 → 输出目录 → 导入 IDA这条链路基本流程就通了。接下来挑一个体积较小的 IL2CPP 游戏把从 dump 到逆向工具里看见函数名的完整流程亲手做一遍。【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表