Ilham 90b1914801 Add overview and how it works section to README
Added detailed overview and explanation of the runtime reconstruction pipeline used by Endfield for IL2CPP metadata.
2026-01-22 10:53:55 +07:00
2026-01-22 10:48:34 +07:00
2026-01-22 10:48:34 +07:00
2026-01-22 10:48:34 +07:00
2026-01-22 10:48:34 +07:00
2026-01-22 10:48:34 +07:00

Overview

Endfield does not load IL2CPP metadata from global-metadata.dat in the standard Unity way.

Instead, it uses a runtime reconstruction pipeline designed to defeat static and file-based dumpers.

How It Works

  • A decoy global-metadata.dat is opened via CreateFile, but its contents are discarded.
  • The real metadata is hidden either:
    • as an embedded resource inside GameAssembly.dll, or
    • as an encrypted slice inside a large game archive.
  • A large buffer is allocated using VirtualAlloc.
  • Encrypted bytes are decrypted / generated at runtime into this buffer.
  • The engines metadata pointer (s_GlobalMetadata) is manually assigned to this buffer, bypassing Unitys normal file loader.
  • The buffer is finalized with VirtualProtect to prevent modification.

Result

  • No usable metadata exists on disk.
  • Static extraction fails by design.
  • The only correct metadata exists only in memory after initialization.

Why a Runtime Dumper

This project locates that runtime buffer, verifies it via the IL2CPP magic header, and dumps the fully reconstructed metadata.

Were switching to a runtime dumper instead, because its simpler, more reliable, and honestly because Im too lazy to hunt down where the encrypted metadata is embedded.

Description
Runtime Endfield Metadata Dumper
Readme 34 KiB
Languages
C++ 100%