2018-03-05 01:29:53 -04:00
|
|
|
|
# Il2CppDumper
|
2019-11-06 20:15:03 +08:00
|
|
|
|
|
|
|
|
|
[![Build status](https://ci.appveyor.com/api/projects/status/anhqw33vcpmp8ofa?svg=true)](https://ci.appveyor.com/project/Perfare/il2cppdumper/branch/master/artifacts)
|
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
Unity il2cpp逆向工程
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
|
|
|
|
## 功能
|
2020-02-13 04:40:09 +08:00
|
|
|
|
|
|
|
|
|
* 还原DLL文件(不包含代码),可用于提取`MonoBehaviour`和`MonoScript`
|
2019-04-12 09:17:29 +08:00
|
|
|
|
* 支持ELF, ELF64, Mach-O, PE和NSO格式
|
2020-02-13 04:40:09 +08:00
|
|
|
|
* 支持Unity 5.3 - 2020
|
|
|
|
|
* 生成IDA和Ghidra的脚本,帮助IDA和Ghidra更好的分析il2cpp文件
|
|
|
|
|
* 支持从内存dump的`libil2cpp.so`文件以绕过99%的保护
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
|
|
|
|
## 使用说明
|
2019-11-06 20:15:03 +08:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
直接运行Il2CppDumper.exe并依次选择il2cpp的可执行文件和global-metadata.dat文件,然后根据提示输入相应信息。
|
|
|
|
|
|
|
|
|
|
程序运行完成后将在当前运行目录下生成输出文件
|
|
|
|
|
|
|
|
|
|
### 命令行
|
|
|
|
|
|
2019-11-06 20:15:03 +08:00
|
|
|
|
```
|
|
|
|
|
Il2CppDumper.exe <executable-file> <global-metadata> [unityVersion] [mode]
|
|
|
|
|
```
|
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
`unityVersion` 用十六进制编辑器打开任意Unity资产文件(一般存在于游戏的`Data`文件夹下),即可在开头找到Unity版本号,类似”5.6“,”2017.2“
|
2019-11-06 20:15:03 +08:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
`mode` 1 - 手动,2 - 自动
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
### 输出文件
|
2019-04-26 19:37:18 +08:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
#### DummyDll
|
2019-04-26 19:37:18 +08:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
文件夹,包含所有还原的DLL文件
|
2019-04-26 19:37:18 +08:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
使用[dnSpy](https://github.com/0xd4d/dnSpy),[ILSpy](https://github.com/icsharpcode/ILSpy)或者其他.Net反编译工具即可查看具体信息
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
可用于提取Unity的`MonoBehaviour`和`MonoScript`,适用于[UtinyRipper](https://github.com/mafaca/UtinyRipper)或者[UABE](https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor)等
|
|
|
|
|
|
|
|
|
|
#### ida.py
|
2019-11-06 20:15:03 +08:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
用于IDA
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
#### ghidra.py
|
|
|
|
|
|
|
|
|
|
用于Ghidra
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
2019-11-06 20:15:03 +08:00
|
|
|
|
#### stringliteral.json
|
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
包含所有stringLiteral信息
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
|
|
|
|
### 关于config.json
|
2020-02-13 04:40:09 +08:00
|
|
|
|
|
2019-11-06 20:15:03 +08:00
|
|
|
|
* `DumpMethod`,`DumpField`,`DumpProperty`,`DumpAttribute`,`DumpFieldOffset`, `DumpMethodOffset`, `DumpTypeDefIndex`
|
|
|
|
|
* 是否在dump.cs输出相应的内容
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
2019-11-06 20:15:03 +08:00
|
|
|
|
* `DummyDll`
|
|
|
|
|
* 是否生成DummyDll
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
2019-11-06 20:15:03 +08:00
|
|
|
|
* `MakeFunction`
|
|
|
|
|
* 是否在script.py中添加MakeFunction代码
|
|
|
|
|
|
|
|
|
|
* `ForceIl2CppVersion`,`ForceVersion`
|
|
|
|
|
* 当ForceIl2CppVersion为true时,程序将根据ForceVersion指定的版本读取il2cpp的可执行文件(Metadata仍然使用header里的版本),在部分低版本的il2cpp中可能会用到(比如安卓20版本下,你可能需要设置ForceVersion为16程序才能正常工作)
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
|
|
|
|
## 常见问题
|
2020-02-13 04:40:09 +08:00
|
|
|
|
|
2019-11-06 20:15:03 +08:00
|
|
|
|
#### `ERROR: Metadata file supplied is not valid metadata file.`
|
2018-03-05 01:29:53 -04:00
|
|
|
|
|
2020-02-13 04:40:09 +08:00
|
|
|
|
global-metadata.dat已被加密。关于解密的问题请去相关破解论坛寻求帮助,请不要在issues提问!
|
|
|
|
|
|
|
|
|
|
#### `ERROR: Can't use auto mode to process file, try manual mode.`
|
|
|
|
|
|
|
|
|
|
确认可执行文件未受保护后,你可以打开一个新的issue,并上传文件,我会尝试解决
|
|
|
|
|
|
|
|
|
|
#### `ERROR: This file may be protected.`
|
|
|
|
|
|
|
|
|
|
Il2CppDumper检测到可执行文件已被保护,使用`GameGuardian`从游戏内存中dump `libil2cpp.so`,然后使用Il2CppDumper载入按提示操作,即可绕过99%的保护
|
2019-11-06 20:15:03 +08:00
|
|
|
|
|
|
|
|
|
## 感谢
|
2020-02-13 04:40:09 +08:00
|
|
|
|
|
2019-11-06 20:15:03 +08:00
|
|
|
|
- Jumboperson - [Il2CppDumper](https://github.com/Jumboperson/Il2CppDumper)
|