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
和MonoScript
UtinyRipper 、UABE
对于IDA
对于IDA,读取il2cpp.h文件并在IDA中应用结构信息
结构信息头文件
对于 Ghidra
对于 BinaryNinja
对于 Ghidra,使用ghidra-wasm-plugin
对于ida.py、ghidra.py和Il2CppBinaryNinja
包含所有 stringLiteral 信息
所有配置选项都位于config.json
可用选项:
DumpMethod
,,,,,,,DumpField
DumpProperty
DumpAttribute
DumpFieldOffset
DumpMethodOffset
DumpTypeDefIndex
是否将这些信息输出到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检测到可执行文件已被保护,使用从游戏内存中GameGuardian
dump出来libil2cpp.so
,然后使用Il2CppDumper加载并按照提示操作,可以绕过大部分保护。
如果你有一部已 root 的 Android 手机,你可以尝试我的另一个项目Zygisk-Il2CppDumper,它可以绕过几乎所有的保护。