
Инструмент для извлечения 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 классов с обёртками виртуальных функций.
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
Без флагов = генерировать всё.
Только в образовательных и исследовательских целях. Проверка памяти только для чтения — никаких модификаций игры, никакого конкурентного преимущества. Используйте на свой страх и риск; может нарушать условия использования целевого приложения. Извлечённые данные остаются интеллектуальной собственностью их владельцев.
| Вывод | Описание |
|---|
internal-sdk/ | C++ заголовки с разрешением во время выполнения (сущности, структуры, перечисления, VData) |
sdk/ | Статический SDK со смещениями constexpr (ломается при патчах, полезен как справка) |
signatures/ | Сигнатуры байтов в стиле IDA для каждой функции vtable в 58+ DLL |
_globals.txt | 10,000+ автоматически обнаруженных глобальных синглтонов с деревьями полей |
_protobuf-messages.txt | Декодированные определения .proto, встроенные в игровые бинарники |
_all-modules.json | Полный структурированный экспорт JSON — передайте его в просмотрщик или свои инструменты |
| Флаг | Описание |
|---|
--process <name> | Целевой процесс (по умолчанию: автоопределение) |
--output <dir> | Выходная директория (по умолчанию: schema-dump/<game>/) |
--live | Запустить WebSocket сервер на :9100 для проверки в реальном времени |
--schema <path> | Загрузить существующий JSON дамп вместо внедрения |
--internal-sdk | Только сгенерировать runtime SDK |
--sdk | Только сгенерировать статический SDK |
--signatures | Только сгенерировать байтовые сигнатуры |
--layouts | Только сгенерировать раскладки членов |