
Laufzeitschema- und RTTI-Extraktionstool für Deadlock, CS2, Dota und andere (Source 2). Kein source2gen erforderlich.
Extrahiert alles aus einem laufenden Source-2-Spiel (Deadlock, CS2, Dota 2) und generiert ein patch-sicheres C++-SDK, das Offsets zur Laufzeit auflöst. Keine hartcodierten Werte, keine manuellen Aktualisierungen nach Spiel-Patches.

dezlock-dump.exe
Das war's. Er erkennt das Spiel automatisch, dumpst alles und generiert das vollständige SDK. Die Ausgabe landet in schema-dump/<game>/ neben der exe.
# Ein bestimmtes Spiel anvisieren
dezlock-dump.exe --process cs2.exe
# Live-Modus – startet einen WebSocket-Server zur Echtzeit-Inspektion von Entitäten
dezlock-dump.exe --live
Fertige C++-Header für deine injizierte DLL. Felder und virtuelle Funktionen werden zur Laufzeit aus dem eigenen SchemaSystem des Spiels aufgelöst – deine kompilierte DLL überlebt Spiel-Patches ohne Neukompilierung.
#include "internal-sdk/client/entities/C_BaseEntity.hpp"
sdk::C_BaseEntity* ent = /* aus der Entitätenliste */;
// Felder – werden zur Laufzeit aufgelöst, nach dem ersten Aufruf gecached
int hp = ent->m_iHealth();
uint8_t team = ent->m_iTeamNum();
bool alive = ent->is_alive();
// Virtuelle Funktionen – über vtable-Index aufgerufen
int max_hp = ent->GetMaxHealth(); // VFUNC(163, int32_t, GetMaxHealth)
2.400+ Strukturen einschließlich aller spielspezifischen VData (Fähigkeiten, Gegenstände, Waffen, Modifikatoren), 229 Entitätenklassen und 1.766 Klassen mit Wrappern für virtuelle Funktionen.
struct C_BaseEntity : CEntityInstance {
SCHEMA_CLASS("client.dll", "C_BaseEntity");
FIELD(m_iHealth, int32_t); // laufzeitaufgelöstes Feld
FIELD_PTR(m_pGameSceneNode, void*); // Pointer-Dereferenzierung
FIELD_ARRAY(m_nCurrencies, int32_t, 6); // Array fester Größe
FIELD_BLOB(m_Particles, 40); // undurchsichtige Bytes
VFUNC(146, int32_t, GetHealth); // benannter virtueller Aufruf
VFUNC_ARGS(42, void, SetModel, const char*); // mit Argumenten
VFUNC_RAW(53); // unbenannt, mit Signaturhinweis
};
Namen virtueller Funktionen werden automatisch aus der Binärdatei ermittelt – Debug-String-XRefs, Memberzugriffs-Inferenz und Protobuf-Deskriptoren. Keine manuelle Konfiguration.
cd viewer && pnpm install && pnpm dev
Ziehe deine _all-modules.json auf die Seite oder verbinde dich live mit einem laufenden Dump (--live-Flag). Durchsuchbarer Klassen-/Feld-/Enum-Browser, Live-Entitäteninspektor, klickbare Vererbungsketten, globale Singletons, Protobuf-Nachrichten.
Erfordert Visual Studio 2022 mit der C++-Desktop-Workload.
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
Keine Flags = alles generieren.
Nur zu Bildungs- und Forschungszwecken. Schreibgeschützte Speicherinspektion – keine Spielmodifikation, kein Wettbewerbsvorteil. Nutzung auf eigenes Risiko; kann gegen die Nutzungsbedingungen der Zielanwendung verstoßen. Extrahierte Daten bleiben geistiges Eigentum ihrer jeweiligen Eigentümer.
| Ausgabe | Beschreibung |
|---|
internal-sdk/ | Laufzeitaufgelöste C++-Header (Entitäten, Strukturen, Enums, VData) |
sdk/ | Statisches SDK mit constexpr-Offsets (bricht bei Patches, als Referenz nützlich) |
signatures/ | Byte-Muster im IDA-Stil für jede vtable-Funktion in über 58 DLLs |
_globals.txt | 10.000+ automatisch entdeckte globale Singletons mit Feldbäumen |
_protobuf-messages.txt | Dekodierte .proto-Definitionen aus den Spiel-Binärdateien |
_all-modules.json | Vollständiger strukturierter JSON-Export – zum Einspeisen in den Viewer oder eigene Werkzeuge |
| Flag | Beschreibung |
|---|
--process <name> | Zielprozess (Standard: automatische Erkennung) |
--output <dir> | Ausgabeverzeichnis (Standard: schema-dump/<game>/) |
--live | Starte WebSocket-Server auf :9100 zur Echtzeit-Inspektion |
--schema <pfad> | Vorhandenen JSON-Dump laden statt injizieren |
--internal-sdk | Nur das Laufzeit-SDK generieren |
--sdk | Nur das statische SDK generieren |
--signatures | Nur Byte-Muster generieren |
--layouts | Nur Member-Layouts generieren |