
Outil d'extraction de schéma runtime et RTTI pour Deadlock, CS2, Dota et autres (Source 2). Aucun source2gen requis.
Extrait tout depuis un jeu Source 2 en cours d'exécution (Deadlock, CS2, Dota 2) et génère un SDK C++ résistant aux patchs qui résout les offsets à l'exécution. Aucune valeur codée en dur, aucune mise à jour manuelle lorsque le jeu est patché.

dezlock-dump.exe
C'est tout. Détecte automatiquement le jeu, extrait tout, génère le SDK complet. La sortie se trouve dans schema-dump/<game>/ à côté de l'exe.
# Target a specific game
dezlock-dump.exe --process cs2.exe
# Live mode — starts a WebSocket server for real-time entity inspection
dezlock-dump.exe --live
Des en-têtes C++ prêts à l'emploi pour votre DLL injectée. Les champs et les fonctions virtuelles sont résolus à l'exécution à partir du SchemaSystem du jeu lui-même — votre DLL compilée survit aux correctifs du jeu sans nécessiter de recompilation.
#include "internal-sdk/client/entities/C_BaseEntity.hpp"
sdk::C_BaseEntity* ent = /* from entity list */;
// Fields — resolved at runtime, cached after first call
int hp = ent->m_iHealth();
uint8_t team = ent->m_iTeamNum();
bool alive = ent->is_alive();
// Virtual functions — call through vtable by index
int max_hp = ent->GetMaxHealth(); // VFUNC(163, int32_t, GetMaxHealth)
Plus de 2 400 structs, y compris toutes les VData spécifiques au jeu (capacités, objets, armes, modificateurs), 229 classes d'entités et 1 766 classes avec des wrappers de fonctions virtuelles.
| Sortie | Contenu |
|---|---|
internal-sdk/ | En-têtes C++ résolus à l'exécution (entités, structs, enums, VData) |
sdk/ | SDK statique avec des offsets constexpr (casse à chaque patch, utile comme référence) |
signatures/ | Motifs d'octets de style IDA pour chaque fonction de vtable sur plus de 58 DLL |
_globals.txt | Plus de 10 000 singletons globaux découverts automatiquement avec arborescences de champs |
_protobuf-messages.txt | Définitions .proto décodées intégrées dans les binaires du jeu |
_all-modules.json | Export JSON structuré complet — à fournir au viewer ou à vos propres outils |
struct C_BaseEntity : CEntityInstance {
SCHEMA_CLASS("client.dll", "C_BaseEntity");
FIELD(m_iHealth, int32_t); // runtime-resolved field
FIELD_PTR(m_pGameSceneNode, void*); // pointer dereference
FIELD_ARRAY(m_nCurrencies, int32_t, 6); // fixed-size array
FIELD_BLOB(m_Particles, 40); // opaque bytes
VFUNC(146, int32_t, GetHealth); // named virtual call
VFUNC_ARGS(42, void, SetModel, const char*); // with arguments
VFUNC_RAW(53); // unnamed, with signature hint
};
Les noms de fonctions virtuelles sont découverts automatiquement à partir du binaire — références croisées de chaînes de débogage, inférence d'accès aux membres et descripteurs protobuf. Aucune configuration manuelle.
cd viewer && pnpm install && pnpm dev
Déposez votre _all-modules.json sur la page, ou connectez-vous en direct à un dump en cours d'exécution (option --live). Navigateur de classes/champs/enums avec recherche, inspecteur d'entités en direct, chaînes d'héritage cliquables, singletons globaux, messages protobuf.
Nécessite Visual Studio 2022 avec la charge de travail C++ desktop.
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
| Option | Description |
|---|---|
--process <name> | Processus cible (par défaut : détection automatique) |
--output <dir> | Répertoire de sortie (par défaut : schema-dump/<game>/) |
--live | Démarre un serveur WebSocket sur :9100 pour une inspection en temps réel |
--schema <path> | Charge un dump JSON existant au lieu d'injecter |
--internal-sdk | Génère uniquement le SDK d'exécution |
--sdk | Génère uniquement le SDK statique |
--signatures | Génère uniquement les motifs d'octets |
--layouts | Génère uniquement les dispositions des membres |
Aucune option = tout générer.
À des fins éducatives et de recherche uniquement. Inspection de la mémoire en lecture seule — aucune modification du jeu, aucun avantage compétitif. À utiliser à vos propres risques ; peut enfreindre les conditions d'utilisation de l'application cible. Les données extraites restent la propriété intellectuelle de leurs détenteurs respectifs.