Il2CppDumper/README.zh-CN.md
2019-11-06 20:15:03 +08:00

3.1 KiB
Raw Blame History

Il2CppDumper

Build status

从il2cpp文件中获取types, methods, fields等等数据

功能

  • 支持ELF, ELF64, Mach-O, PE和NSO格式
  • 支持Metadata版本16, 19~24
  • 导出包括types, fields, properties, methods, attributes
  • 自动生成IDA脚本
    • 重命名函数
    • 重命名并注释Metadata
    • MakeFunction完善IDA分析
  • 生成DummyDll

使用说明

Il2CppDumper.exe <executable-file> <global-metadata> [unityVersion] [mode]

或者直接运行Il2CppDumper.exe并依次选择il2cpp的可执行文件和global-metadata.dat文件然后根据提示输入相应信息。

将在程序运行目录下生成输出文件

关于模式

Manual

你需要手动输入CodeRegistrationMetadataRegistration的指针地址,一般需要依靠反汇编工具来获取地址

Auto - 已弃用

通过函数的特征字节找到il2cpp_codegen_register函数并获取传入il2cpp::vm::MetadataCache::Register中的参数1CodeRegistration和参数2MetadataRegistration)。由于不同编译器优化差异,很多情况下无法正常工作。

Auto(Plus) - 优先使用此模式

以metadata的数据作为依据指针特征作为判读条件进行搜索。

支持Metadata版本20及以后版本

在16版本下只能获取到CodeRegistration地址

Auto(Symbol)

只支持ELF使用自带的符号进行处理。

输出文件

dump.cs

文本文件推荐使用有c#语法高亮的编辑器打开

script.py

需要安装IDA所需的python。在IDA中File-Script file选择script.py运行即可会重命名methodName添加stringLiteral注释和MakeFunction

stringliteral.json

包含所有stringLiteral信息

DummyDll

利用Mono.Cecil生成的仿制Dll可用于MonoBehaviour的反序列化

关于config.json

  • DumpMethodDumpFieldDumpPropertyDumpAttributeDumpFieldOffset, DumpMethodOffset, DumpTypeDefIndex

    • 是否在dump.cs输出相应的内容
  • DummyDll

    • 是否生成DummyDll
  • MakeFunction

    • 是否在script.py中添加MakeFunction代码
  • ForceIl2CppVersionForceVersion

    • 当ForceIl2CppVersion为true时程序将根据ForceVersion指定的版本读取il2cpp的可执行文件Metadata仍然使用header里的版本在部分低版本的il2cpp中可能会用到比如安卓20版本下你可能需要设置ForceVersion为16程序才能正常工作

常见问题

ERROR: Metadata file supplied is not valid metadata file.

global-metadata.dat不是一个有效的metadata文件通常是因为游戏加密了global-metadata.dat文件。关于解密的问题最好去相关破解论坛寻求帮助请不要在issues提问

ERROR: Can't use this mode to process file, try another mode.

当所有自动模式都无法工作时确认可执行文件未加壳或受保护后你可以打开一个新的issue并上传文件我会尝试解决

感谢