Repository navigation
v2.1.6 — self-checks (status.json + Status page), self-healing signatures
Dumper-quality release for CS2 build 14184. The dump is unchanged; the dumper now checks itself and repairs stale signatures.
Self-checks after every dump
The dumper runs a set of checks against the live process and writes include/status.json. A failed check makes it exit 1, so a broken dump cannot be published by accident. Four of the five defects fixed in v2.1.5 would have been caught by these:
global_twins— every a2x-styledwXxxglobal must resolve to the same address as its signature twin (dwGameRules↔pGameRules,dwSensitivity↔pSensitivity,dwSoundSystem↔pSoundSystem, … 11 pairs).globals_in_data/globals_not_code— globals must land in a data section, never on code or a vtable.function_prologues— function targets must sit right after padding (deliberate patch sites are exempt).protobufs_vs_engine— the protobuf layouts read from the reflection tables must equal the hand-verified engine structs (CBaseUserCmdPB,CSubtickMoveStep, …).signatures_resolve,patterns_unique,patterns_healed,weapons_snapshot— coverage, uniqueness, re-anchoring, weapon-table coverage. The game'sClientVersion/PatchVersionfromsteam.infare recorded too.
On the site: a new Status tab shows every check with its details, unresolved signatures by name, auto-healed entries and known issues; a banner appears on every page when a check failed. GET /api/status serves the same, and the Discord bot has /status.
Self-healing signatures
When a database pattern stops matching after a CS2 update but the function itself did not change, the dumper now re-anchors it on its own: the entry's 24 prologue bytes from the previous dump (--previous <dir>, default include) are searched in the new module; exactly one hit after padding means the function only moved, so a fresh pattern that is unique in .text is generated there and published in place of the stale one (flagged with healed_from). Verified by breaking CreateMove and FrameStageNotify on purpose: both came back at their correct addresses with new unique patterns.
py tools/verify/heal.py --apply copies healed patterns into src/patterns/database.rs. Globals and functions whose prologue really changed stay on the unresolved list until they are fixed by hand.
Tools
tools/verify/ carries the offline rescan (dbscan.py, runs against the DLLs on disk without the game), the deterministic pattern generator (genpat.py) and heal.py. All documented in the wiki page Status and Self-Healing.
cs2-sdk.exe below. Run it as administrator with CS2 open; dump in a match for the full weapons list.