repinek/frida-il2cpp-proto-dumper

GitHub: repinek/frida-il2cpp-proto-dumper

利用 Frida 动态注入从 IL2CPP Unity 游戏中提取 protobuf-net 消息定义,生成有效的 .proto3 文件。

Stars: 8 | Forks: 0

# frida-il2cpp-proto-dumper 使用 [Frida](https://frida.re/) 和 [frida-il2cpp-bridge](https://github.com/vfsfitvnm/frida-il2cpp-bridge) 从 IL2CPP Unity 游戏中提取 `protobuf-net` 消息和枚举,并生成有效的 `.proto` 文件。 ## 工作原理 通过 Frida 注入到游戏进程,并在运行时遍历 IL2CPP 域。 使用原生的 IL2CPP 导出函数查找所有带有 `[ProtoContract]` 特性的类和枚举,然后通过托管反射读取它们的成员,以提取字段名、tag 和类型。 生成有效的 `.proto3` schema。 ## 环境要求 - [Frida](https://frida.re) 需要 Python >= 3.7 - Node.js - Unity IL2CPP 游戏 _(可能不支持受保护或被混淆的游戏)_ ## 使用说明 1. 克隆仓库 ``` git clone https://github.com/repinek/frida-il2cpp-proto-dumper cd frida-il2cpp-proto-dumper ``` 2. 安装依赖 ``` python -m venv .venv # Creating a virtual environment for Python # 激活 Python venv,这取决于您使用的 OS。例如使用 fish 的 Linux: . .venv/bin/activate.fish pip install -r requirements.txt npm install ``` 3. 构建脚本 ``` npm run build ``` 脚本将被构建到 `dist/agent.js` 中 4. 使用任意方法运行脚本(frida-server、frida-gadget 等) 成功附加后,脚本将自动提取数据,并输出最终的文件绝对路径。 #### 预期输出 ``` Script and Il2cpp Loaded! x assemblies loaded! Found 2 custom_attrs exports! Checking Assembly-CSharp... Found proto classes in protobuf-net! Dumping ABC.XYZ... Done! Written to /abc/xyz/proto/dump.proto ``` ## 许可证 该项目基于 **MIT License** 授权。 详情请参阅 [LICENSE](LICENSE) 文件。 ## 鸣谢 该项目受到 DJ Katy 研究的启发并基于其研究。 - **[Il2CppProtoExtractor-FallGuys](https://github.com/djkaty/Il2CppProtoExtractor-FallGuys)** - 原始的 C# 工具,使用 [Il2CppInspector](https://github.com/djkaty/Il2CppInspector) 生成 `.proto` 文件 - **[Practical IL2CPP: Extracting Protobuf Definitions](https://katyscode.wordpress.com/2020/08/10/practical-il2cpp-protobuf/)** - djkaty 撰写的关于逆向工程 `protobuf-net` 结构和 IL2CPP 的文章。
标签:Docker支持, Frida, MITM代理, Protobuf, Unity, 云资产清单, 数据可视化, 数据提取, 游戏安全, 自动化攻击, 逆向工具, 逆向工程