Il2CppDumper/README.md

53 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

2016-12-31 02:29:45 +08:00
# Il2CppDumper
2017-04-11 14:37:13 +08:00
[![Build status](https://ci.appveyor.com/api/projects/status/anhqw33vcpmp8ofa?svg=true)](https://ci.appveyor.com/project/Perfare/il2cppdumper/branch/master/artifacts)
2017-10-26 05:30:24 +08:00
从il2cpp中获取types, methods, fields等等数据
基础逻辑代码来源于[Il2CppDumper](https://github.com/Jumboperson/Il2CppDumper)
2017-04-11 14:37:13 +08:00
2017-10-26 05:30:24 +08:00
## 功能
* 支持ELF(arm, x86), Mach-O(32bit, 64bit)
* 支持Metadata版本16, 20, 21, 22, 23, 24
2018-01-04 15:45:10 +08:00
* 导出包括types, fields, properties, methods, attributes
2018-01-08 05:10:00 +08:00
* 自动生成IDA脚本(重命名methodName添加stringLiteral注释和MakeFunction)
2018-01-05 05:53:58 +08:00
* 生成DummyDll
2017-04-15 09:18:02 +08:00
2017-10-26 05:30:24 +08:00
## 使用说明
运行Il2CppDumper.exe并依次选择il2cpp的可执行文件ELF或者Mach-O文件和global-metadata.dat文件然后选择运行的模式将生成dump.cs文件和script.py脚本
### 关于模式
#### Manual
2018-01-08 05:10:00 +08:00
你需要手动输入`CodeRegistration``MetadataRegistration`的指针地址,一般需要依靠反汇编工具来获取地址
2017-10-26 05:30:24 +08:00
#### Auto
2018-01-08 05:10:00 +08:00
原理是通过函数的特征字节找到`il2cpp_codegen_register`函数并获取传入`il2cpp::vm::MetadataCache::Register`中的参数1`CodeRegistration`和参数2`MetadataRegistration`)。不过由于不同编译器编译出来的结果有差异,很多情况下无法正常工作。
2017-10-26 05:30:24 +08:00
#### Auto(Advanced)
2018-01-08 05:10:00 +08:00
支持Metadata 20及以后的版本在16版本下只能获取到`CodeRegistration`地址利用指针特征进行搜索通用性比Auto强。
#### Auto(Plus) - **Recommend**
支持Metadata 20及以后的版本在16版本下只能获取到`CodeRegistration`地址以metadata的数据作为依据指针特征作为判读条件进行搜索对于某些文件处理的比Auto(Advanced)好。
#### Auto(Symbol)
只支持安卓,使用自带的符号进行处理。
2017-10-26 05:30:24 +08:00
### 关于dump.cs
2018-01-08 05:10:00 +08:00
文本文件推荐使用有c#语法高亮的编辑器打开
2017-10-26 05:30:24 +08:00
### 关于script.py
2018-01-08 05:10:00 +08:00
需要安装IDA所需的python。在IDA中File-Script file选择script.py运行即可会重命名methodName添加stringLiteral注释和MakeFunction
2017-10-26 05:30:24 +08:00
2018-01-04 15:45:10 +08:00
### 关于DummyDll
2018-01-08 05:10:00 +08:00
利用Mono.Cecil生成的仿制Dll使用反编译工具进行查看
2018-01-04 15:45:10 +08:00
2017-10-26 05:30:24 +08:00
### 关于config.json
2018-01-08 05:10:00 +08:00
`DumpMethod``DumpField``DumpProperty``DumpAttribute``DumpFieldOffset`
2017-10-26 05:30:24 +08:00
控制程序是否在dump.cs输出相应的内容  
2018-01-08 05:10:00 +08:00
`DummyDll`
控制程序是否生成DummyDll  
`ForceIl2CppVersion``ForceVersion`
当ForceIl2CppVersion为true时程序将根据ForceVersion指定的版本读取il2cpp的可执行文件Metadata仍然使用header里的版本这在部分低版本的il2cpp中将会有用比如安卓20版本下你可能需要设置ForceVersion为16程序才能正常工作
2017-11-03 17:14:59 +08:00
## 常见问题
#### `ERROR: Metadata file supplied is not valid metadata file.`
正如它所显示的你选择的global-metadata.dat不是一个有效的metadata文件通常是因为游戏加密了global-metadata.dat文件。关于解密的问题最好去破解论坛寻求帮助请不要在issues提问
2018-01-08 05:10:00 +08:00
#### `ERROR: Can't use this mode to process file, try another mode.`  
当所有自动模式都无法工作时你可以打开一个新的issue并上传文件我会尝试解决