
Инструмент для извлечения runtime schema и RTTI для Deadlock, CS2, Dota и других (Source 2). source2gen не требуется.
Извлекает всё из запущенной игры на Source 2 (Deadlock, CS2, Dota 2) и генерирует устойчивый к патчам C++ SDK, который разрешает смещения во время выполнения. Никаких жёстко заданных значений, никаких ручных обновлений при выходе патчей игры.

dezlock-dump.exe
Вот и всё. Автоматически определяет игру, выгружает всё, генерирует полный SDK. Результат сохраняется в schema-dump/<game>/ рядом с 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
Готовые к подключению заголовочные файлы C++ для вашей внедрённой DLL. Поля и виртуальные функции разрешаются во время выполнения из собственной SchemaSystem игры — ваш скомпилированный DLL переживает патчи игры без пересборки.
#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+ структур, включая все игровые VData (способности, предметы, оружие, модификаторы), 229 классов сущностей и 1 766 классов с обёртками виртуальных функций.
| Выход | Что это |
|---|---|
internal-sdk/ | C++-заголовки, разрешаемые во время выполнения (сущности, структуры, перечисления, VData) |
sdk/ | Статический SDK с constexpr-смещениями (ломается при патчах, полезен как справочник) |
signatures/ | Байтовые сигнатуры в стиле IDA для каждой функции vtable во всех 58+ DLL |
_globals.txt | 10 000+ автоматически обнаруженных глобальных синглтонов с деревьями полей |
_protobuf-messages.txt | Декодированные определения .proto, встроенные в игровые бинарники |
_all-modules.json | Полный структурированный экспорт JSON — передайте его в просмотрщик или собственные инструменты |
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
};
Имена виртуальных функций обнаруживаются автоматически из бинарного файла — перекрёстные ссылки на отладочные строки, вывод о доступе к членам и дескрипторы protobuf. Никакой ручной настройки.
cd viewer && pnpm install && pnpm dev
Перетащите ваш _all-modules.json на страницу или подключитесь в реальном времени к работающему дампу (флаг --live). Браузер классов/полей/перечислений с поиском, инспектор сущностей в реальном времени, кликабельные цепочки наследования, глобальные синглтоны, сообщения protobuf.
Требуется Visual Studio 2022 с рабочей нагрузкой для классических приложений C++.
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
| Флаг | Описание |
|---|---|
--process <name> | Целевой процесс (по умолчанию: автоопределение) |
--output <dir> | Каталог вывода (по умолчанию: schema-dump/<game>/) |
--live | Запустить WebSocket-сервер на :9100 для инспекции в реальном времени |
--schema <path> | Загрузить существующий JSON-дамп вместо внедрения |
--internal-sdk | Генерировать только runtime SDK |
--sdk | Генерировать только статический SDK |
--signatures | Генерировать только байтовые сигнатуры |
--layouts | Генерировать только раскладки членов |
Без флагов = генерировать всё.
Только в образовательных и исследовательских целях. Инспекция памяти только для чтения — без модификации игры, без конкурентного преимущества. Используйте на свой риск; может нарушать ToS целевого приложения. Извлечённые данные остаются интеллектуальной собственностью их соответствующих владельцев.