
Ferramenta de extração de esquema em tempo de execução + RTTI para Deadlock, CS2, Dota e outros (Source 2). Não requer source2gen.
Extrai tudo de um jogo Source 2 em execução (Deadlock, CS2, Dota 2) e gera um SDK C++ à prova de patches que resolve offsets em tempo de execução. Sem valores fixos, sem atualizações manuais quando o jogo recebe um patch.

dezlock-dump.exe
É isso. Detecta o jogo automaticamente, faz o dump de tudo, gera o SDK completo. A saída fica em schema-dump/<game>/ ao lado do 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
Headers C++ drop-in para sua DLL injetada. Campos e funções virtuais são resolvidos em tempo de execução a partir do próprio SchemaSystem do jogo — sua DLL compilada sobrevive aos patches do jogo sem precisar ser recompilada.
#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)
Mais de 2.400 structs, incluindo todos os VData específicos do jogo (habilidades, itens, armas, modificadores), 229 classes de entidade e 1.766 classes com wrappers de funções virtuais.
| Saída | O que é |
|---|---|
internal-sdk/ | Cabeçalhos C++ resolvidos em tempo de execução (entidades, structs, enums, VData) |
sdk/ | SDK estático com offsets constexpr (quebra em patches, útil como referência) |
signatures/ | Padrões de bytes no estilo IDA para cada função de vtable em mais de 58 DLLs |
_globals.txt | Mais de 10.000 singletons globais descobertos automaticamente com árvores de campos |
_protobuf-messages.txt | Definições .proto decodificadas embutidas nos binários do jogo |
_all-modules.json | Exportação JSON estruturada completa — alimente o visualizador ou suas próprias ferramentas com ela |
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
};
Os nomes das funções virtuais são descobertos automaticamente a partir do binário — xrefs de strings de debug, inferência de acesso a membros e descritores protobuf. Sem configuração manual.
cd viewer && pnpm install && pnpm dev
Solte seu _all-modules.json na página, ou conecte-se ao vivo a um dump em execução (flag --live). Navegador pesquisável de classes/campos/enums, inspetor de entidades ao vivo, cadeias de herança clicáveis, singletons globais, mensagens protobuf.
Requer Visual Studio 2022 com a carga de trabalho de desktop C++.
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
| Flag | Descrição |
|---|---|
--process <name> | Processo alvo (padrão: detecção automática) |
--output <dir> | Diretório de saída (padrão: schema-dump/<game>/) |
--live | Inicia o servidor WebSocket em :9100 para inspeção em tempo real |
--schema <path> | Carrega um dump JSON existente em vez de injetar |
--internal-sdk | Gera apenas o SDK de runtime |
--sdk | Gera apenas o SDK estático |
--signatures | Gera apenas padrões de bytes |
--layouts | Gera apenas layouts de membros |
Sem flags = gera tudo.
Apenas para fins educacionais e de pesquisa. Inspeção de memória somente leitura — sem modificação do jogo, sem vantagem competitiva. Use por sua conta e risco; pode violar os ToS da aplicação alvo. Os dados extraídos permanecem sendo propriedade intelectual de seus respectivos proprietários.