dezlock-dump

March 6, 2026 · View on GitHub

GitHub Release Build Discord Hire Me

Extracts everything from a running Source 2 game (Deadlock, CS2, Dota 2) and generates a patch-proof C++ SDK that resolves offsets at runtime. No hardcoded values, no manual updates when the game patches.

dezlock-dump viewer

Watch the demo

Quick Start

  1. Download from Releases (or build from source)
  2. Launch your game — load into a match or lobby
  3. Run as administrator:
dezlock-dump.exe

That's it. Auto-detects the game, dumps everything, generates the full SDK. Output lands in schema-dump/<game>/ next to the 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

What You Get

Runtime-Resolved SDK (the main thing)

Drop-in C++ headers for your injected DLL. Fields and virtual functions resolve at runtime from the game's own SchemaSystem — your compiled DLL survives game patches without rebuilding.

#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)

2,400+ structs including all game-specific VData (abilities, items, weapons, modifiers), 229 entity classes, and 1,766 classes with virtual function wrappers.

Everything Else

OutputWhat
internal-sdk/Runtime-resolved C++ headers (entities, structs, enums, VData)
sdk/Static SDK with constexpr offsets (breaks on patches, useful as reference)
signatures/IDA-style byte patterns for every vtable function across 58+ DLLs
_globals.txt10,000+ auto-discovered global singletons with field trees
_protobuf-messages.txtDecoded .proto definitions embedded in game binaries
_all-modules.jsonComplete structured JSON export — feed it to the viewer or your own tools

SDK Macros

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
};

Virtual function names are discovered automatically from the binary — debug string xrefs, member access inference, and protobuf descriptors. No manual config.

Interactive Viewer

cd viewer && pnpm install && pnpm dev

Drop your _all-modules.json onto the page, or connect live to a running dump (--live flag). Searchable class/field/enum browser, live entity inspector, clickable inheritance chains, global singletons, protobuf messages.

Build from Source

Requires Visual Studio 2022 with C++ desktop workload.

cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

CLI Reference

FlagDescription
--process <name>Target process (default: auto-detect)
--output <dir>Output directory (default: schema-dump/<game>/)
--liveStart WebSocket server on :9100 for real-time inspection
--schema <path>Load existing JSON dump instead of injecting
--internal-sdkOnly generate runtime SDK
--sdkOnly generate static SDK
--signaturesOnly generate byte patterns
--layoutsOnly generate member layouts

No flags = generate everything.

Technical Deep-Dives

Disclaimer

Educational and research purposes only. Read-only memory inspection — no game modification, no competitive advantage. Use at your own risk; may violate target application ToS. Extracted data remains the IP of its respective owners.

Contributing

Issues | Pull requests | Discord