
Outil d'extraction de schéma runtime et RTTI pour Deadlock, CS2, Dota et autres (Source 2). Aucun source2gen requis.
Extrait tout d'un jeu Source 2 en cours d'exécution (Deadlock, CS2, Dota 2) et génère un SDK C++ à l'épreuve des mises à jour qui résout les décalages à l'exécution. Pas de valeurs codées en dur, pas de mises à jour manuelles lors des correctifs du jeu.

dezlock-dump.exe
C'est tout. Il 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'exécutable.
# 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
En-têtes C++ prêts à l'emploi pour votre DLL injectée. Les champs et fonctions virtuelles sont résolus à l'exécution depuis le SchemaSystem du jeu — votre DLL compilée survit aux mises à jour du jeu sans 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 structures incluant toutes les données VData spécifiques au jeu (capacités, objets, armes, modificateurs), 229 classes d'entités et 1 766 classes avec wrappers de fonctions virtuelles.
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 des 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 (option --live). Navigateur de classes/champs/énums consultable, 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
Aucun indicateur = tout générer.
À des fins éducatives et de recherche uniquement. Inspection mémoire en lecture seule — aucune modification du jeu, aucun avantage concurrentiel. Utilisation à vos risques et périls ; peut violer les CGU de l'application cible. Les données extraites restent la propriété intellectuelle de leurs propriétaires respectifs.
| Sortie | Description |
|---|
internal-sdk/ | En-têtes C++ résolus à l'exécution (entités, structures, énumérations, VData) |
sdk/ | SDK statique avec offsets constexpr (casse lors des mises à jour, utile comme référence) |
signatures/ | Patrons d'octets de style IDA pour chaque fonction vtable dans plus de 58 DLL |
_globals.txt | Plus de 10 000 singletons globaux découverts automatiquement avec arbres 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 — à charger dans le visualiseur ou vos propres outils |
| Indicateur | 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émarrer un serveur WebSocket sur :9100 pour une inspection en temps réel |
--schema <path> | Charger un dump JSON existant au lieu d'injecter |
--internal-sdk | Générer uniquement le SDK d'exécution |
--sdk | Générer uniquement le SDK statique |
--signatures | Générer uniquement les patrons d'octets |
--layouts | Générer uniquement les dispositions des membres |