
Deadlock, CS2, Dota 및 기타 게임(Source 2)을 위한 런타임 스키마 + RTTI 추출 도구입니다. source2gen이 필요하지 않습니다.
실행 중인 Source 2 게임(Deadlock, CS2, Dota 2)에서 모든 것을 추출하여 런타임에 오프셋을 해석하는 패치 내성 C++ SDK를 생성합니다. 하드코딩된 값이 없으며, 게임이 패치되어도 수동 업데이트가 필요 없습니다.

dezlock-dump.exe
끝입니다. 게임을 자동 감지하고, 모든 것을 덤프하며, 전체 SDK를 생성합니다. 출력은 exe 옆 schema-dump/<game>/에 생성됩니다.
# 특정 게임 대상
dezlock-dump.exe --process cs2.exe
# 라이브 모드 — 실시간 엔티티 검사를 위해 WebSocket 서버 시작
dezlock-dump.exe --live
주입된 DLL용 드롭인 C++ 헤더입니다. 필드와 가상 함수는 게임 자체 SchemaSystem에서 런타임에 해석되므로, 컴파일된 DLL이 게임 패치 이후에도 재빌드 없이 동작합니다.
#include "internal-sdk/client/entities/C_BaseEntity.hpp"
sdk::C_BaseEntity* ent = /* from entity list */;
// 필드 — 런타임에 해석되며, 첫 호출 이후 캐시됨
int hp = ent->m_iHealth();
uint8_t team = ent->m_iTeamNum();
bool alive = ent->is_alive();
// 가상 함수 — vtable 인덱스로 호출
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
};
가상 함수 이름은 바이너리에서 자동으로 발견됩니다. 디버그 문자열 상호 참조, 멤버 접근 추론, 프로토버프 설명자가 사용됩니다. 수동 설정이 필요 없습니다.
cd viewer && pnpm install && pnpm dev
_all-modules.json을 페이지에 드롭하거나 실행 중인 덤프에 라이브로 연결하세요(--live 플래그). 검색 가능한 클래스/필드/열거형 브라우저, 라이브 엔티티 검사기, 클릭 가능한 상속 체인, 글로벌 싱글톤, 프로토버프 메시지.
Visual Studio 2022와 C++ 데스크톱 워크로드가 필요합니다.
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
플래그 없음 = 모든 항목 생성.
교육 및 연구 목적으로만 사용하십시오. 읽기 전용 메모리 검사 — 게임 수정 없음, 경쟁 우위 없음. 사용에 따른 책임은 본인에게 있으며, 대상 애플리케이션의 이용약관을 위반할 수 있습니다. 추출된 데이터는 각 소유주의 지적 재산권에 속합니다.
| 출력 | 설명 |
|---|
internal-sdk/ | 런타임 해석 C++ 헤더 (엔티티, 구조체, 열거형, VData) |
sdk/ | constexpr 오프셋이 포함된 정적 SDK (패치 시 깨지지만 참고용으로 유용) |
signatures/ | 58개 이상의 DLL에 걸친 모든 vtable 함수에 대한 IDA 스타일 바이트 패턴 |
_globals.txt | 필드 트리가 포함된 10,000개 이상의 자동 발견 글로벌 싱글톤 |
_protobuf-messages.txt | 게임 바이너리에 포함된 디코딩된 .proto 정의 |
_all-modules.json | 완전한 구조화된 JSON 내보내기 — 뷰어나 자체 도구에 전달 |
| 플래그 | 설명 |
|---|
--process <name> | 대상 프로세스 (기본값: 자동 감지) |
--output <dir> | 출력 디렉터리 (기본값: schema-dump/<game>/) |
--live | :9100에서 WebSocket 서버를 시작하여 실시간 검사 |
--schema <path> | 주입 대신 기존 JSON 덤프 로드 |
--internal-sdk | 런타임 SDK만 생성 |
--sdk | 정적 SDK만 생성 |
--signatures | 바이트 패턴만 생성 |
--layouts | 멤버 레이아웃만 생성 |