🏆 Feature Comparison — Rust vs C# vs Python
| Feature | Python | C# | Rust (This) |
|---|---|---|---|
| dump.cs generation | ⚠️ Basic (no properties) | ✅ Full | ✅ Full |
| DummyDLL generation | ❌ No | ✅ Yes | ✅ Yes (parallel) |
| il2cpp.h struct gen | ⚠️ Basic | ✅ Full | ✅ Full |
| script.json | ✅ Yes | ✅ Yes | ✅ Yes |
| stringliteral.json | ✅ Yes | ✅ Yes | ✅ Yes |
| Split Dump Per Type (DiffableCS) | ❌ No | ❌ No | ✅ Yes (parallel) |
| Variable-width indices (v39/Unity 6) | ❌ No | ❌ No | ✅ Yes |
| Auto-XOR Metadata Decryption | ❌ No | ❌ No | ✅ Yes |
| Latest Unity Formats (v104, v106) | ❌ No | ❌ No | ✅ Yes |
| Assembly name in dump.cs | ❌ No | ❌ No | ✅ Yes |
| Unity version detection | ❌ No | ❌ No | ✅ Auto-detect |
| Inline Disassembly (ARM64/ARM32/x86/x64) | ❌ No | ❌ No | ✅ Yes |
| Control Flow Graph (CFG) Analysis | ❌ No | ❌ No | ✅ Yes |
| Metadata Annotations (strings, types, vtable) | ❌ No | ❌ No | ✅ Yes |
| Semantic Variable Tracking | ❌ No | ❌ No | ✅ Yes |
| Fat Mach-O (Universal) | ❌ No | ✅ Yes | ✅ Yes |
| WASM (WebGL) | ✅ Yes | ✅ Yes | ✅ Yes |
| Dump file support | ❌ No | ✅ Yes | ✅ Yes (+ ELF reload) |
| v27+ ImageBase fix | ❌ No | ✅ Yes | ✅ Yes |
Parallel I/O (rayon) |
❌ No | ❌ No | ✅ Yes |
| Auto-numbered output dirs | ❌ No | ❌ No | ✅ Dump0/, Dump1/... |
| Modern CLI UI (spinners, colors, prompts) | ❌ No | ❌ No | ✅ Yes |
| Cross-platform binary | ⚠️ Needs Python | ⚠️ Needs .NET | ✅ Standalone |
| C++ Scaffold (il2cpp-functions.h) | ❌ No | ❌ No | ✅ Yes |
| C++ Name Mangling (Itanium ABI) | ❌ No | ❌ No | ✅ Yes |
| Unity Header Auto-Detection | ❌ No | ✅ Yes | ✅ Yes (version-matched) |
| cpp_project/ Scaffolding | ❌ No | ✅ Yes | ✅ Yes |
| Topological Sort (type ordering) | ❌ No | ❌ No | ✅ Yes |
| Type Group Classification | ❌ No | ❌ No | ✅ Yes |
| Enhanced IDA Metadata | ❌ No | ❌ No | ✅ Yes |
| ELF Section Header Symbol Fallback | ❌ No | ✅ Yes | ✅ Yes |
| GUI | ❌ No | ✅ WinForms | ✅ Jetpack Compose + Tauri |
| Embeddable as library | ❌ No | ❌ No | ✅ Rust crate / JNI |
⚡ Performance
| Phase | Python | C# | Rust |
|---|---|---|---|
| Metadata loading | ~3.7s | ~2s | ~0.5s |
| Binary loading | ~5.2s | ~3s | ~0.8s |
| Search & Init | ~5.4s | ~2s | ~0.3s |
| dump.cs | ~14s | ~5s | ~2s |
| Struct generation | ~6.4s | ~5s | ~3.5s |
| DummyDLL | ❌ N/A | ~3s | ~1.5s |
| Total | ~35s | ~20s | ~5–8s |
4× faster than Python, 2.4× faster than C# — on the same binary.
✨ Features
Core Dumping
- dump.cs — Full C# class/method/field/property decompilation with RVA/VA/Offset and assembly names
- Inline Disassembly — Optional per-method native assembly embedded directly in dump.cs
- DiffableCs — Splits classes into individual
.csfiles by namespace, parallelized withrayon - script.json — Method addresses/signatures for IDA/Ghidra scripting
- il2cpp.h — C struct definitions for native analysis with topological type ordering
- stringliteral.json — All string literal values and indices
- DummyDLL — Reconstructed .NET assemblies for dnSpy/ILSpy (parallelized)
C++ Headers & Scaffolding
- il2cpp-functions.h — C++ scaffold with function pointer typedefs for hooking
- Itanium ABI Name Mangling — Correct C++ mangled names for all IL2CPP types
- Unity Header Auto-Detection — Version-matched
il2cpp-types.handil2cpp-api.hfrom embedded header database - cpp_project/ — Ready-to-compile C++ project scaffold with includes and CMake structure
- Topological Sort — Types emitted in dependency order; circular dependencies detected with fallback
- Type Group Classification — Types categorized into forward declarations, method types, generic types, usage types
- Compiler Layout — GCC (
__attribute__) or MSVC (__declspec) layout attributes - Enhanced IDA Metadata — Extra type info annotations for IDA Pro scripts
Disassembly Engine
- Multi-Architecture — ARM64 (
yaxpeax-arm), ARM32, x86/x64 (iced-x86) - Control Flow Graph (CFG) — Basic block detection, branch targets, loop back-edges,
if (condition)reconstruction - Metadata Annotations — String literals, type info, method/field references, vtable resolution via
ADRP+LDRpatterns - Semantic Variable Tracking — Maps registers to parameter names (
X0→this,X1→arg0) - Configurable — Toggle hex bytes, field names, annotations, CFG independently
Supported Platforms
| Platform | Format | Status |
|---|---|---|
| Android | ELF32 / ELF64 | ✅ |
| iOS / macOS | Mach-O / Fat Mach-O | ✅ |
| Windows | PE32 / PE64 | ✅ |
| Nintendo Switch | NSO | ✅ |
| WebGL | WASM | ✅ |
IL2CPP Versions
- v16 – v39 (Unity 5.3 → Unity 6)
- Variable-width indices for v39/Unity 6
- Latest undocumented formats:
v104,v106 - Auto XOR metadata decryption (1-byte, 4-byte, 8-byte, rolling, position-dependent, header-only)
- Manual version override via config
Search Strategies
- SectionHelper — Format-aware section scanning
- Symbol Search — ELF/Mach-O symbol table lookup
- ARM32 Search — Dedicated binary pattern matching
- __mod_init_func — Mach-O initializer analysis
- Manual mode — Enter addresses as fallback
📦 Installation
From Source
The binary will be at target/release/il2cpp_dumper (.exe on Windows).
Cross-Compilation
# Linux
# macOS
# Android (via cross)
🔧 Usage
Examples
Example Output
Rodroid Il2CppDumper
╦╦ ╔═╗╔═╗╔═╗ ╔╦╗╦ ╦╔╦╗╔═╗╔═╗╦═╗
║║ ╠═╝║ ╠═╝ ║║║ ║║║║╠═╝║╣ ╠╦╝
╩╩═╝╚ ╚═╝╩ ═╩╝╚═╝╩ ╩╩ ╚═╝╩╚═
Version v0.4.0
─────────────────────────────────────
📂 Output .\Dump0
─── Binary Analysis ───────────────────
✓ Binary loaded: libil2cpp.so (52.43 MB)
Unity Version: 2022.3.62f2
✓ Metadata loaded: global-metadata.dat (10.88 MB)
Metadata Version: 31
Type Definitions: 13815
Method Definitions: 93772
─── Format Detection ──────────────────
🔍 Detected ELF64 format
IL2CPP Version: 31
CodeRegistration: 0x44e5ff8
MetadataRegistration: 0x465a328
─── Output Generation ─────────────────
✓ dump.cs generated
✓ script.json, il2cpp.h, stringliteral.json generated
✓ Dummy DLL files generated
═══════════════════════════════════════
✨ All tasks completed successfully!
═══════════════════════════════════════
📂 Output Directory: .\Dump0
📦 Generated Files: dump.cs, script.json, il2cpp.h, stringliteral.json, DummyDll/*.dll
🚀 Elapsed: 8.35s
───────────────────────────────────────
⚙️ Configuration
Create a config.json in the working directory (or use --config):
🏗️ Architecture
il2cpp_dumper/src/
├── main.rs # CLI, format detection, orchestration
├── config.rs # Configuration handling
├── formats/ # Binary format parsers
│ ├── elf.rs # ELF32/64 (Android, Linux)
│ ├── pe.rs # PE32/64 (Windows)
│ ├── macho.rs # Mach-O + Fat Mach-O (iOS, macOS)
│ ├── nso.rs # NSO (Nintendo Switch)
│ └── wasm.rs # WebAssembly (WebGL)
├── il2cpp/ # IL2CPP structures and metadata
│ ├── base.rs # Il2Cpp main struct
│ ├── metadata.rs # Metadata parser
│ └── structures.rs # IL2CPP type definitions
├── search/ # Registration search algorithms
│ └── section_helper.rs
├── executor/ # IL2CPP type resolution engine
├── disassembler/ # Multi-arch disassembly engine
│ ├── mod.rs # CFG analysis, annotations, formatting
│ ├── arm.rs # ARM64/ARM32 decoder (yaxpeax)
│ └── x86.rs # x86/x64 decoder (iced-x86)
└── output/ # Output generators
├── decompiler.rs # dump.cs + inline disassembly
├── struct_generator.rs # script.json, il2cpp.h, type classification
├── dummy_assembly_generator.rs # DummyDLL (parallel)
├── cpp_scaffolding.rs # il2cpp-functions.h generation
├── cpp_ast.rs # C++ AST emission with group annotations
├── cpp_type_model.rs # C++ type model from IL2CPP types
├── cpp_type_dependency_graph.rs # Topological sort + cycle detection
├── name_mangler.rs # Itanium ABI C++ name mangling
├── header_manager.rs # Unity header version matching
└── unity_version.rs # Unity version parsing & ranges
📜 License
MIT
🙏 Credits
- Perfare/Il2CppDumper — Original C# implementation
- SamboyCoding/Cpp2IL — Advanced C# IL2CPP analysis tool
- springmusk026/Il2CppDumper-Python — Python port
- LukeFZ/Il2CppInspectorRedux — Thanks for the code i used in v4 of my il2cppdumper, but its more faster since the logic its on rust and not C#
- dotnetdll — .NET DLL generation crate
- rayon — Parallel processing
- console-rs — Terminal styling ecosystem (
console,indicatif,dialoguer)
📬 Community
| Link | |
|---|---|
| 📢 Telegram Channel | Join Channel |
| 💬 Telegram Group | Join Group |
| 👤 Developer | @rodroidmods |
⚠️ Disclaimer: This tool is for educational and research purposes only. Respect game developers' rights and terms of service.