smartfish67png/BetterCpp2IL

GitHub: smartfish67png/BetterCpp2IL

一款增强的 Unity IL2CPP 逆向工程工具,能将游戏的原生二进制文件深度还原为可编译的 C# 源代码。

Stars: 0 | Forks: 0

# Cpp2IL - 增强版 ``` ░░░░░░ ░░░░░░░ ░░░░░░░░ ░░░░░░░░ ░░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░ ░░ ░░ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒ ▒▒ ▒▒ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ██████ ███████ ██ ██ ███████ ██ ██ ██████ ██ ██ ███████ ██ ███████ ``` ### 高级 IL2CPP 反编译与恢复工具 Cpp2IL 是一个强大的工具,它将 Unity 的 IL2CPP 构建过程进行逆向工程,还原为 可读的 C# 源代码。它解析 IL2CPP 元数据和二进制文件,使用指令集无关表示进行深度分析,并重构出可编译的 C# 代码,包含类型解析、控制流恢复、属性/事件检测、空检查消除以及激进的拷贝传播。 ## 功能 - **C# 源代码重构** - 从 IL2CPP 二进制文件输出可编译的 .cs 文件 - **类型传播** - 通过方法分析解析局部变量类型 - **控制流恢复** - 重构 if/else、循环和 switch 语句 - **属性和事件检测** - 将 get_/set_ 方法识别为 C# 属性/事件 - **空检查消除** - 移除 Unity 运行时的空检查样板代码 - **拷贝传播** - 消除由 phi 节点破坏产生的冗余局部到局部移动 - **运算符解析** - 将 op_Equality、op_Addition 等转换为 C# 运算符 - **多平台** - 支持 Windows、Linux、macOS x64/arm64、WebAssembly 和 PS4 ## 快速开始 ``` Cpp2IL --game-path="C:\Path\To\Your\Game" ``` 或者用于 APK 文件: ``` Cpp2IL --game-path="C:\Path\To\game.apk" ``` 默认情况下,输出将被写入到 `cpp2il_out/`。 ## 用法 ### 基本用法 ``` Cpp2IL --game-path= [--output-as=] [--output-to=] ``` ### 命令行选项 | 选项 | 示例 | 描述 | |:------:|:-------:|:-----------:| | `--game-path` | `C:\Path\To\Game` | 游戏文件夹或 APK 的路径。必填。 | | `--exe-name` | `TestGame` | 如果自动检测失败,指定游戏的 exe 名称 | | `--verbose` | | 启用详细日志记录 | | `--output-as` | `csharp_source` | 输出格式(默认:`csharp_source`) | | `--output-to` | `out` | 输出目录(默认:`cpp2il_out`) | | `--list-output-formats` | | 列出可用的输出格式 | | `--list-processors` | | 列出可用的处理层 | ### 输出格式 | 格式 | 描述 | |:------:|:-----------:| | `csharp_source` | 重构的 C# 源代码(推荐) | | `dll_il_recovery` | 包含恢复的 IL 的托管 DLL(需要分析) | | `metadata` | 原始元数据转储 | | `mewedumped` | Mewed 风格的元数据转储 | ## 项目结构 ``` Cpp2IL/ ├── src/ # Source projects │ ├── Cpp2IL/ # CLI application │ ├── Cpp2IL.Core/ # Core analysis library │ ├── LibCpp2IL/ # IL2CPP metadata parser │ ├── StableNameDotNet/ # Name stabilization │ ├── WasmDisassembler/ # WebAssembly support │ └── Cpp2IL.Plugin.*/ # Plugins ├── tests/ # Test projects │ ├── Cpp2IL.Core.Tests/ │ └── LibCpp2ILTests/ ├── docs/ # Documentation └── TestFiles/ # Test data ``` ## 构建 ### 前置条件 - .NET 10.0 SDK(旧版本构建使用 .NET 9.0) - .NET Framework 4.7.2 SDK(用于旧版构建) ### 构建命令 ``` # 构建所有 projects dotnet build -c Release # 仅构建 CLI dotnet build src/Cpp2IL/Cpp2IL.csproj -c Release # 运行 tests dotnet test -c Release ``` ## 开发 反编译 pipeline 的工作流程如下: 1. **IL2CPP 解析** (`LibCpp2IL`) - 读取元数据和二进制文件 2. **ISIL 转换** (`Cpp2IL.Core`) - 将 x86/ARM/WASM 转换为指令集无关语言 3. **CFG 构建** - 通过支配者分析构建控制流图 4. **方法分析** - 执行栈分析、简化和元数据应用 5. **C# 生成** (`CSharpSourceOutputFormat`) - 输出重构的 C# 源代码 关键入口点: - `MethodAnalysisContext.Analyze()` - 开始一个方法的反编译 - `CSharpSourceOutputFormat` - 处理 C# 源代码输出 - `Simplifier` - 在 ISIL 上运行优化遍次 ## CI/CD 每次推送都会触发 GitHub Actions 构建: - 针对 Windows、Linux、macOS (x64 + arm64) 的原生构建 - 用于 Wine/Proton 兼容性的 .NET Framework 4.7.2 构建 - 完整的测试套件 ### 依赖项 使用以下库构建(除非另有说明,均为 MIT 协议): - [iced](https://github.com/icedland/iced) - x86 反汇编器 - [Disarm](https://github.com/SamboyCoding/Disarm) - ARM64 反汇编器 - [AsmResolver](https://github.com/Washi1337/AsmResolver) - .NET 程序集操作 - [AssetRipper.CIL](https://github.com/AssetRipper/AssetRipper.CIL) - IL 桩生成 - [Pastel](https://github.com/silkfire/Pastel) - 控制台颜色 - [CommandLineParser](https://github.com/commandlineparser/commandline) - CLI 解析 - [xUnit](https://github.com/xunit/xunit) - 测试(Apache 2.0 + MIT) ### 致谢 基于 [Il2CppDumper](https://github.com/Perfare/Il2CppDumper) 和 [Il2CppInspector](https://github.com/djkaty/Il2CppInspector/)。 感谢我自己提供的早期支持。 ## 许可证 本项目基于 MIT 协议授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:IL2CPP, Unity, URL提取, 云安全监控, 云资产清单, 代码重构, 反编译, 渗透测试, 逆向工程, 静态分析