Skip to content

Repository files navigation

ReforgeIL

ReforgeIL is a fail-closed IL2CPP analysis and managed-code reconstruction pipeline. It joins immutable compact-v39 metadata, runtime registrations, PE data, and bounded x86-64 evidence before producing Managed IR, linked CIL, and independently verified assemblies.

The repository root contains the only maintained implementation. Historical acceptance data lives under oracle/; it is evidence for corpus comparison, not executable recovery code.

Architecture

The implementation is split into real CMake domains:

formats + native
       |
    analysis -> ssa -> semantics
                         |
                  reconstruction
                         |
          cil + assembly + verification
                         |
                      workflow
                         |
                        cli

Only workflow composes the domains. Reconstruction consumes resolved facts and keeps contradictions, exhausted budgets, and unsupported native behavior as explicit obligations.

See docs/ARCHITECTURE.md for ownership and dependency rules, and docs/STATUS.md for implemented capabilities and remaining acceptance work.

Build

ReforgeIL requires CMake 3.20 or newer, Ninja, Python 3, and a C++20 compiler.

Windows

The Windows presets use the standalone LLVM-MinGW and Ninja installations under out/tools/windows. Both presets also run incremental portability analysis during compilation so GCC-sensitive narrowing and shadowing failures are reported before the Linux CI build.

pwsh -File scripts/bootstrap_windows_toolchain.ps1
cmake --preset windows-release
cmake --build --preset windows-release
ctest --preset windows-release

For an iterative Debug build:

cmake --preset windows-debug
cmake --build --preset windows-debug
ctest --preset windows-debug

Other platforms

cmake --preset release
cmake --build --preset release
ctest --preset release

CLI

The reforge-next executable exposes the current workflow:

reforge-next analyze  --assembly <GameAssembly.dll>
                      --metadata <global-metadata.dat>
                      --run <directory>

reforge-next explain  --run <directory>
                      --method <image>:<rid>
                      [--instruction-limit <count>]

reforge-next recover  --run <directory>
                      --image <name>
                      --rid <rid>
                      --output <dll>
                      --policy complete

reforge-next campaign --run <directory>
                      --image <name>
                      --output <directory>
                      --workers <count>
                      [--instruction-limit <count>]

reforge-next verify   --run <directory>
                      [--assembly <dll>]

Recovery emits only complete, proven methods. A successful build or one representative RID is not corpus-wide recovery evidence.

Development

Read AGENTS.md, the nearest subtree AGENTS.md, and docs/ARCHITECTURE.md before modifying a domain. Feature families belong in explicit subdirectories, and focused tests should link the smallest owning target.

The root quality gate checks ownership, file sizes, function sizes, parameter counts, complexity, and nesting:

ctest --test-dir out/build/release -R reforge_next_quality --output-on-failure

See CONTRIBUTING.md for the complete validation contract.

About

ReforgeIL is a IL2CPP analysis and managed-code recovery pipeline

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages