Unity il2cpp 逆向工程
完整的 DLL 恢复(代码除外),可用于提取MonoBehaviour和MonoScript
支持 ELF、ELF64、Mach-O、PE、NSO 和 WASM 格式
支持 Unity 5.3 - 2022.2
支持生成IDA、Ghidra和Binary Ninja脚本,帮助它们更好地分析il2cpp文件
支持生成结构头文件
支持Android内存转储libil2cpp.so文件绕过保护
支持绕过简单的PE保护
运行Il2CppDumper.exe选择il2cpp可执行文件和global-metadata.dat文件,然后根据提示输入信息
然后程序将在当前工作目录中生成所有输出文件
Il2CppDumper.exe <executable-file> <global-metadata> <output-directory>
文件夹,包含所有恢复的 dll 文件
可用于提取 UnityMonoBehaviour和MonoScriptUtinyRipper 、UABE
对于IDA
对于IDA,读取il2cpp.h文件并在IDA中应用结构信息
结构信息头文件
对于 Ghidra
对于 BinaryNinja
对于 Ghidra,使用ghidra-wasm-plugin
对于ida.py、ghidra.py和Il2CppBinaryNinja
包含所有 stringLiteral 信息
所有配置选项都位于config.json
可用选项:
DumpMethod,,,,,,,DumpFieldDumpPropertyDumpAttributeDumpFieldOffsetDumpMethodOffsetDumpTypeDefIndex
是否将这些信息输出到dump.cs
GenerateDummyDll,GenerateScript
是否生成这些东西
DummyDllAddToken
DummyDll中是否添加token
RequireAnyKey
最后是否按任意键退出
ForceIl2CppVersion,ForceVersion
如果ForceIl2CppVersion是true,程序将使用 中指定的版本号ForceVersion来选择 il2cpp 二进制文件的解析器(不影响元数据解析器的选择)。这在某些较旧的 il2cpp 版本上可能有用(例如,程序可能需要在 il2cpp v20 (Android) 二进制文件上使用 v16 解析器才能正常工作)。
ForceDump
强制将文件视为转储
NoRedirectedPointer
将转储文件中的指针视为未重定向,此选项需要用于true从某些设备转储的文件
请确保选择正确的文件。有时游戏可能会出于内容保护等目的对此文件进行混淆处理。此类文件的反混淆处理超出了本程序的范畴,因此请勿提交与反混淆相关的问题。
如果您的文件是libil2cpp.so并且您有一部已 root 权限的 Android 手机,您可以尝试我的另一个项目Zygisk-Il2CppDumper,它可以绕过这种保护。
请注意,PC 平台的可执行文件是GameAssembly.dll或*Assembly.dll
您可以打开一个新问题并上传文件,我会尝试解决。
Il2CppDumper检测到可执行文件已被保护,使用从游戏内存中GameGuardiandump出来libil2cpp.so,然后使用Il2CppDumper加载并按照提示操作,可以绕过大部分保护。
如果你有一部已 root 的 Android 手机,你可以尝试我的另一个项目Zygisk-Il2CppDumper,它可以绕过几乎所有的保护。