从正在运行的 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 = /* 来自实体列表 */;
// 字段——运行时解析,首次调用后缓存
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
};
虚函数名称自动从二进制文件中发现——调试字符串交叉引用、成员访问推断和 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/ | 带有 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 | 仅生成成员布局 |