Skip to content
CAI
Software that uses CAICheck a score

Perfare/Il2CppDumper

38.3

Weak · 23 September 2026

9.4k

lines of production code

C#

with Python

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Il2CppDumper is a reverse engineering tool designed to analyze Unity's Il2Cpp compiled binaries. It parses various executable formats and metadata structures to extract method signatures, fields, and attributes. The system generates structured data and scripts for disassemblers like IDA and Ghidra, and can produce C\# decompilations or C++ headers for further analysis.

Features

Il2CppDumper gains structured configuration and multi-disassembler script support

The tool now uses a \config.json\ file to control output options (such as dumping methods, fields, properties, attributes, and offsets) and to force the Il2Cpp version. Additionally, the project now includes dedicated analysis scripts for IDA Pro, Ghidra, Binary Ninja, and Hopper, which automatically apply function names, signatures, and string literals from the generated JSON output to the respective disassembler.

Il2CppDumper · high confidence

Initial release of Il2CppDumper

The project introduces Il2CppDumper, a tool for Unity il2cpp reverse engineering. It supports ELF, ELF64, Mach-O, PE, NSO, and WASM formats, and can generate scripts for IDA, Ghidra, and Binary Ninja, as well as structure header files. The release includes the solution file, configuration options, and comprehensive English and Chinese documentation.

(repo-wide) · high confidence

New output modules for C\# decompilation, C++ headers, and script data

The dumper now provides structured outputs for downstream tooling: a C\# decompiler (Il2CppDecompiler) generates readable C\# source files; a C++ header generator (StructGenerator) produces header files with type definitions and method signatures for each supported Unity version; a JSON script exporter (ScriptJson) lists method addresses, signatures, and metadata; and a dummy assembly exporter (DummyAssemblyExporter) optionally generates C\# assemblies with token information. These changes enable users to obtain C\# source, C++ headers, and script data directly from the dump process.

Il2CppDumper/Outputs · high confidence

Behavioural changes

Added support for new executable formats and improved parsing logic

The tool now supports parsing ELF (32/64-bit), Mach-O (32/64-bit), NSO, and PE executable formats, each with dedicated classes and header structures. This includes implementing search algorithms for code and metadata registrations, handling relocations, and detecting protected or encrypted files. Specific improvements include better handling of dumped files, support for x86\_64 relocations, and enhanced logic for version-specific metadata parsing.

Il2CppDumper/ExecutableFormats · medium confidence

Expanded support for newer Il2Cpp versions and formats

The dumper now supports Il2Cpp versions 24.1 through 31, including specific handling for versions 24.2, 24.3, 24.4, 24.5, 27.1, 27.2, 29, 29.1, and 31. This includes updated metadata structures for custom attributes (using \attributeDataRanges\ for v29+), new fields for unresolved calls and interop data, and improved detection logic for dump files and PE/ELF formats.

Il2CppDumper/Il2Cpp · high confidence

Improved binary parsing and metadata handling for IL2CPP dumps

The tool now supports parsing incomplete or special 32-bit dump ELF files and dynamically loads PE files for parsing. It also adds support for IL2CPP versions 27, 29, and 31, and improves the handling of metadata for versions 27 and above. Additionally, the dummy DLL output now includes method slots, token attributes, and version numbers, while fixing bugs related to generic function addresses, value type field offsets, and custom attributes.

Il2CppDumper/Utils · high confidence

New IO infrastructure and attributes for versioned and array field parsing

The dumper now uses a new BinaryStream class that supports reading versioned fields via a new VersionAttribute (allowing fields to be conditionally read based on a double-typed Version property) and array fields via an ArrayLengthAttribute. This enables the tool to handle newer Il2Cpp versions and dumped PE files without requiring manual metadata address input, while also supporting WebAssembly and v29+ dumps.

Il2CppDumper/IO · medium confidence

Dependencies

Updated .NET target frameworks and Mono.Cecil dependency

The project file now targets .NET 6.0 and .NET 8.0, replacing previous framework versions. The Mono.Cecil package has been updated to version 0.11.4.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 39 → 38 (-0.7)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 55 → 50 (-4.8)
  • Architecture 99 → 98 (-0.6)
  • Maturity 43 → 43 (+0.0)
  • Readiness 17 → 17 (+0.0)
  • Security 100 → 100 (+0.0)

Resolved (21)

  • Change coupling: Macho.cs ↔ StructGenerator.cs (Il2CppDumper/ExecutableFormats/Macho.cs)
  • Duplicated block (10 lines × 3) (Il2CppDumper/ExecutableFormats/Macho64.cs)
  • Duplicated block (12 lines × 2) (Il2CppDumper/ExecutableFormats/Macho.cs)
  • Duplicated block (12 lines × 2) (Il2CppDumper/ExecutableFormats/Macho64.cs)
  • Duplicated block (12 lines × 2) (Il2CppDumper/ExecutableFormats/NSO.cs)
  • Duplicated block (12 lines × 2) (Il2CppDumper/Outputs/StructGenerator.cs)
  • Duplicated block (13 lines × 2) (Il2CppDumper/ExecutableFormats/Elf64.cs)
  • Duplicated block (13 lines × 2) (Il2CppDumper/ExecutableFormats/Macho.cs)
  • Duplicated block (16 lines × 2) (Il2CppDumper/ExecutableFormats/Elf.cs)
  • Duplicated block (17 lines × 2) (Il2CppDumper/ExecutableFormats/Macho64.cs)
  • Duplicated block (17 lines × 2) (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • Duplicated block (17 lines × 3) (Il2CppDumper/ExecutableFormats/Elf.cs)
  • Duplicated block (18 lines × 2) (Il2CppDumper/ExecutableFormats/Macho.cs)
  • Duplicated block (20 lines × 2) (Il2CppDumper/ExecutableFormats/Elf.cs)
  • Duplicated block (7 lines × 2) (Il2CppDumper/ExecutableFormats/Elf.cs)
  • Duplicated block (7 lines × 2) (Il2CppDumper/ExecutableFormats/Elf64.cs)
  • Duplicated block (7 lines × 2) (Il2CppDumper/ExecutableFormats/Macho.cs)
  • Duplicated block (9 lines × 2) (Il2CppDumper/Utils/SectionHelper.cs)
  • LLM evaluation failed
  • No exposed public API
  • …and 1 more

New (54)

  • Change-coupling hub: Il2CppClass.cs → BinaryStream.cs, Metadata.cs, MetadataClass.cs (Il2CppDumper/Il2Cpp/Il2CppClass.cs)
  • CommentedOutCode (Il2CppDumper/ExecutableFormats/PEClass.cs)
  • CommentedOutCode (Il2CppDumper/Utils/DummyAssemblyGenerator.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • DeadPreprocessorBranch (Il2CppDumper/IO/Lz4DecoderStream.cs)
  • Documentation: no architecture or design documentation (README.md)
  • Duplicated block (10 lines × 2) (Il2CppDumper/Utils/SectionHelper.cs)
  • Duplicated block (11 lines × 2) (Il2CppDumper/ExecutableFormats/Elf64.cs)
  • Duplicated block (11 lines × 2) (Il2CppDumper/Utils/DummyAssemblyGenerator.cs)
  • Duplicated block (11 lines × 3) (Il2CppDumper/ExecutableFormats/Macho64.cs)
  • …and 34 more

Architecture

  • Unchanged — 2 containers · 0 contexts · 0 edges

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Perfare/Il2CppDumper was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 4741d46ba9cd6159c5d853eb9d6fc48b4bfa2b1a — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.