il2cpp_dumper 0.4.1

A blazing fast and reliable il2cpp dumper cross platfrom.
Documentation

🏆 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 .cs files by namespace, parallelized with rayon
  • 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.h and il2cpp-api.h from 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+LDR patterns
  • Semantic Variable Tracking — Maps registers to parameter names (X0this, X1arg0)
  • 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 crates.io

cargo install il2cpp_dumper

This installs the latest release globally. Run il2cpp_dumper from anywhere.

From Source

git clone https://github.com/rodroidmods/il2cpp-dumper-rs.git
cd il2cpp-dumper-rs/il2cpp_dumper
cargo build --release

The binary will be at target/release/il2cpp_dumper (.exe on Windows).

Cross-Compilation

# Linux
cargo build --release --target x86_64-unknown-linux-gnu

# macOS
cargo build --release --target aarch64-apple-darwin

# Android (via cross)
cross build --release --target aarch64-linux-android

🔧 Usage

il2cpp_dumper <il2cpp-binary> <global-metadata.dat> [output-dir]

Examples

il2cpp_dumper libil2cpp.so global-metadata.dat
il2cpp_dumper GameAssembly.dll global-metadata.dat ./output
il2cpp_dumper UnityFramework global-metadata.dat

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):

{
  "ForceIl2CppVersion": false,
  "ForceVersion": 29.0,
  "ForceDump": false,
  "NoRedirectedPointer": false,
  "GenerateStruct": true,
  "GenerateDummyDll": true,
  "DummyDllAddToken": true,
  "dumpDisassembly": false,
  "dumpDisassemblyHexBytes": true,
  "dumpDisassemblyFieldNames": true,
  "dumpDisassemblyAnnotations": true,
  "dumpDisassemblyCfg": true,
  "maxDisassemblyInstructions": 512,
  "generateCppScaffold": true,
  "mangleNames": true,
  "enhancedIdaMetadata": true,
  "generateUnityHeaders": true,
  "compilerLayout": "GCC",
  "useTopologicalSort": true
}

🏗️ 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


📬 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.