Przejdź do treści
Biblioteka skilli
Programowanie · Analiza

reverse-engineering

/reverse-engineering

Czyta działanie gry, by mod mógł się podpiąć: dekompiluje kod .NET, IL2CPP i Javy, zrzuca formaty danych i sprawdza przebieg renderowania.

Licencja
MIT
Ostatnia zmiana repozytorium
16.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
3
Skrypty
1
Komentarze HTML
0
Adresy URL w SKILL.md
7
Przestarzałość

Brak sygnałów. Repozytorium zmienione 16.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • 1 skrypt w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: references/ue3-packages/unpack_upk.py

Co robi i kiedy

Czyta działanie gry, by mod mógł się podpiąć: dekompiluje kod .NET, IL2CPP i Javy, zrzuca formaty danych i sprawdza przebieg renderowania.

Wyzwalacze z opisu

how does the boss AI workfind the damage functionwhat format is this .sld/.pak/.datwhere is the player position in memory
Oryginalny opis (EN)

Read how a game actually works so a mod can hook it. Decompile .NET/Mono (ILSpy), IL2CPP (Cpp2IL, Il2CppDumper), Java (Vineflower) and native code (Ghidra, IDA, via REA's MCP or your own); dump data and asset formats; reverse-engineer a binary file format and prove it with a round trip; read live memory and drive a debugger (REA, Cheat Engine, Frida, x64dbg); find render passes (RenderDoc). Use when a mod needs game internals, e.g. "how does the boss AI work", "find the damage function", "what format is this .sld/.pak/.dat", "where is the player position in memory".

Jak działa

  1. Pick the tool by what the code is (um scan tells you)
  2. Data files and asset formats
  3. Make it an oracle
Sekcje z nagłówków SKILL.md, w oryginale · 110 linii, 884 słów
Podgląd SKILL.md
---
name: reverse-engineering
description: Read how a game actually works so a mod can hook it. Decompile .NET/Mono (ILSpy), IL2CPP (Cpp2IL, Il2CppDumper), Java (Vineflower) and native code (Ghidra, IDA, via REA's MCP or your own); dump data and asset formats; reverse-engineer a binary file format and prove it with a round trip; read live memory and drive a debugger (REA, Cheat Engine, Frida, x64dbg); find render passes (RenderDoc). Use when a mod needs game internals, e.g. "how does the boss AI work", "find the damage function", "what format is this .sld/.pak/.dat", "where is the player position in memory".
---

# Reverse engineering for mods

Rule zero: **read the real thing, don't guess.** Decompiled code, the actual data, a live memory view or a
GPU capture is the spec. Write what you learn into `MODLOG.md` (names, IDs, offsets, formats) as you go.

Keep all decompiled output and extracted assets **outside** the mod repo (e.g. `~/<game>-decomp/`) and never
publish them.

## Pick the tool by what the code is (`um scan` tells you)

**Managed .NET** (XNA/FNA, Unity Mono, most indie C#)
- `dotnet tool install -g ilspycmd`, then `ilspycmd -p -o ~/<game>-decomp <Game>.exe` (or
  `Assembly-CSharp.dll`). This gives a full C# project you can grep.
- dnSpyEx: step through with a debugger, set breakpoints, edit methods.
- MCP: ILSpy-MCP / dnspy-mcp let an agent query types and methods directly.

**Unity IL2CPP**
- Cpp2IL (or Il2CppDumper) on `GameAssembly.dll` + `global-metadata.dat` gives types, fields, method
  signatures and addresses, plus dummy DLLs for ILSpy.
- Method bodies are native: load `GameAssembly.dll` in Ghidra/IDA (via REA) and apply the generated script
  to name functions.
- Live: UnityExplorer, or REA's Frida session.

**Java** (Minecraft, Slay the Spire...)
Vineflower / CFR / Recaf. For Minecraft, use Loom `genSources` with Mojang mappings.

**Native C/C++** (custom engines, Unreal game code, console recomps)
- Ghidra (free) or IDA, driven through MCP so the agent can decompile, rename, retype and follow
  cross-references:
  - Ghidra: GhidraMCP (LaurieWired), pyghidra-mcp (headless, with a run-script tool; code-capable tools beat
    hundreds of tiny ones), ReVa.
  - IDA: the official Hex-Rays IDA MCP (IDA 9.4+ Pro/Home; "code mode" runs IDAPython), or ida-pro-mcp.
  - Binary Ninja and radare2 have MCP servers too.
- Workflow:
  1. Strings, then cross-references, then the function.
  2. Name and type everything you understand. Renames accumulate into a readable program.
  3. Confirm dynamically (below) before building on a guess. Agents can confidently misidentify things.
- Unreal: dump the reflection data first (UE4SS dumper or Dumper-7); it names most gameplay classes and
  properties for free.

**Dynamic / live**
- **REA** (https://github.com/morluto/rea, `npx rea-agents setup`) — one MCP covering all of this. Static:
  native binaries through Ghidra/IDA/Hopper, .NET assemblies and CIL, Android APKs via JADX, JS/Electron,
  WASM, Go/Rust, firmware, SQLite. Runtime: debugger sessions it owns (Rizin, GDB), Frida injection, live
  memory reads, navigation context. Results carry their evidence and their unknowns. Needs Node 22+;
  native targets need an engine you already have installed.
- **Cheat Engine**, by hand, for the value-scan loop: scan → "find out what writes to this address" → struct
  → owner.
- **x64dbg** for breakpoints and tracing on Windows (bind any bridge to 127.0.0.1; some default to 0.0.0.0).
- **Frida** to hook functions from JavaScript and log arguments, when scripting beats driving a GUI.
- ReClass.NET rebuilds structs from live memory.

**Graphics**
- RenderDoc (renderdoc-mcp) captures a frame and shows every draw, the render targets, the constant buffers
  (view/projection matrices) and the depth buffer.
- That's how you find where to inject geometry or effects (mashup-mods), and which texture holds a sprite
  atlas.

## Data files and asset formats
Use the community tool first:
- Unity: UABEA, AssetRipper
- Unreal: FModel, UAssetGUI
  - **Fully compressed UE3 `.upk`** (UELib shows `Exports=0`): unpack a copy with Gildor's `decompress`
    (from UE Viewer), or, for LZO packages, with
    [`unpack_upk.py`](references/ue3-packages/README.md).
- Bethesda: xEdit, BSArch
- GameMaker: UndertaleModTool
- Genie: genieutils
- Source: VRF, Crowbar
- FromSoft: WitchyBND, Smithbox
- Godot: GDRE Tools

Before reversing a format yourself, search the community archives. Most game formats from the 2000s and
2010s were worked out there:
- **XeNTaX** (closed in 2023): the [forum](https://archive.org/details/forum.xentax.com_2023-08-15),
  [wiki](https://archive.org/details/wiki-wikixentaxcom_202305) and
  [attachments](https://archive.org/details/Xentax-forum-attachments-archive) are on archive.org, with a
  [public backup on GitHub](https://github.com/XeNTaXBackup/XeNTaXBackup.github.io);
- **[ZenHAX](https://zenhax.com/index.php.html)**: game file research and QuickBMS scripts (posts up to
  early 2023);
- **[The definitive guide to exploring file formats](https://archive.org/details/definitive-guide-to-exploring-file-formats)**
  (Mr. Mouse, XeNTaX): the classic tutorial on reading an unknown format.

Use them for format knowledge and tools, whatever its origin (betas, leaked SDKs). Don't download game files,
leaked code, SDKs or license keys from them.

For an **undocumented format**:
1. Collect several stock files. Compare sizes, and hex-dump the headers (`xxd | head`). Look for magic
   numbers, counts, offsets and tables of fixed-size records.
2. Form a hypothesis for the header, then the frame/record layout, then the compression. Check it by
   parsing every stock file without errors.
3. Write a reader that decodes to something viewable (PNGs, JSON) and **look at it**.
4. Write the writer, and **prove it with a round trip**: decode → encode → decode, compared against the
   original. The AoE2 SLD sprite writer was accepted only when it round-tripped the stock knight at
   0.9/255 mean error (`examples/aoe2-de-civ/sld.py`).
5. Only then write new files. Test them in game with one asset before batch-converting.

## Make it an oracle
- **Engine logic you port** (for a simulator, a trainer, a reimplementation): record real traces from the
  game (positions, velocities per tick) and replay them against your port. In the Terraria Eye of Cthulhu
  work, the Eye's velocity matched 99.9% once the port used the action applied on frame t+1. Float32
  constants mattered too (`0.2f` ≠ `0.2`). A leftover mismatch was traced to a hidden buff (Happy!, x1.21
  move speed). Replays find what reading the code misses.
- **For long RE runs:**
  - a journal file;
  - small verified steps;
  - cap attempts per problem (about 3 identical failures, then change approach);
  - commit every confirmed fact.
Pliki w paczce (3)
  • SKILL.md 7 KB
  • references/ue3-packages/README.md 3 KB
  • references/ue3-packages/unpack_upk.py 5 KB

Wersje

RepozytoriumWynikLicencja
Ta strona · ahmedtahaatiya/universal-modder-unrestricted100MIT
rehan-remade/universal-modder100MIT
saschb2b/skills100MIT
emiluzelac/universal-reverse-engineering100MIT
Fixed-Seed/game-changer100MIT
mohitmishra786/low-level-dev-skills100MIT
AlicanKaya192/Mindgate90MIT

Identyczna treść występuje jeszcze w 2 innych folderach na GitHubie. Tu pokazujemy jedną, najlepiej ocenioną kopię.

Migawka bazy z 13.11.2026 · wersja paczki 1449e321bc8e (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100ghidra-reverse
    Wspiera inżynierię wsteczną w darmowym Ghidra (headless lub GUI): dekompilacja, odwołania krzyżowe i opcjonalnie przepływy Ghidra MCP, gdy IDA jest niedostępna.
  • 100rea
    Ustala, jak dokładnie działa funkcja w gotowej aplikacji bez kodu źródłowego, dobierając narzędzie analizy i zostawiając dowody poza kontekstem.
  • 90d2r-engine
    Zmienia mechanikę silnika Diablo II Resurrected, której nie da się opisać danymi gry, przez wtyczki D2RLoader.
  • 95rea-analysis-optimization
    Optymalizuje analizę Android w REA pod kątem opóźnień, procesora i pamięci, zachowując poprawność i dowody.
  • 100ilspy-decompile
    Wyjaśnia wewnętrzne działanie kodu .NET przez dekompilację zestawów: API frameworka, źródła pakietów NuGet i skompilowane binaria.
  • 100game-mod-e2e
    Obsługuje pełny cykl modów do gier PC: budowanie, wdrażanie, automatyczną weryfikację w silniku i konfigurację CI/CD.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.