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.
This commit is contained in:
Ilham
2026-01-22 10:53:55 +07:00
committed by GitHub
parent 6647ce2800
commit 90b1914801

28
README.md Normal file
View File

@@ -0,0 +1,28 @@
## 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.