Repository navigation
Changelog
scros22 edited this page Sep 25, 2026
·
5 revisions
Each release carries a cs2-sdk.exe build and the dump for the CS2 build named in its title. Full notes are on the releases page.
- The Features tab was rebuilt around recipes that are checked against a working implementation and the current build, each with an Internal and an External version (a switch on the site): Entity list, ESP, FOV changer, Aimbot, Skin changer, Knife changer. Numbered steps, the exact offsets, globals and functions (with this build's RVA and pattern), and Copy as C++ per recipe.
- Corrected along the way: entity tracking now hooks
CGameEntitySystem::OnAddEntity/OnRemoveEntity(vtable slots 15/16; the old "listener vector at +0x30" was wrong — it is at+0x2150); the head bone is 7 (head_0), not 6 (neck_0) — read from the live model; the FOV recipe follows the game's own resolver (cameram_iFOV, else controllerm_iDesiredFOV, else 90); the aimbot usesC_CSPlayerPawn_GetAimPunchfor recoil andSetViewAnglesto steer; the skin and knife changers follow the flow that works on build 14184 (client-side item identity, fallback paint + paint attributes, composite rebuild; subclass token, model change, animation-graph rebind). - Offsets in the recipes resolve from this dump (schema, engine structs, or schema + fixed delta); the few hand-verified values carry the build they were checked on, and a new
verified_manualcheck warns when that is not the current build.
-
verified_features.jsonoffsets were stale. 38 of the 67 field offsets had been typed in on an older build (m_iTeamNum 0x3EB,m_iClip1 0x16D8,m_iShotsFired 0x1C5C, …) and ten named the wrong class or a field that is not where they said (m_iKills/m_iDeathslive inm_matchStats, the fallback paint-kit fields onC_EconEntity,m_iFOVonCCSPlayerBase_CameraServices,m_iItemDefinitionIndexunderm_AttributeManager.m_Item). Offsets are now resolved from the schema dumped in the same run; only the two non-schema fields keep hand-verified values. The knife changer'sUpdateSubclasshook pointed 11 bytes into its function — it now names a new function-start signature,C_BaseEntity_UpdateSubclass(IDA-verified: it writes the subclass-data pointer at+0x388). The FOV changer's hook named a signature that does not exist; it now namesGetWorldFovResolver. - New self-checks
verified_fieldsandverified_hooksfail the run if a feature field or hook stops resolving. -
CCSGOInput::m_FrameInput(+0x228) removed from the engine structs: nothing on build 14184 confirms it. Every remaining engine-struct field was re-checked against the code that reads or writes it. - The three hand-typed interface slots (
CInputSystem::SetRelativeMouseMode,CPanoramaUIEngine::GetUIEngine,CEnginePVSManager::SetPvsEnabled) re-checked in IDA. - New icon (a gold C) for
cs2-sdk.exeand the site; the exe carries proper version details; the terminal output is restyled.
-
Self-checks after every dump, written to
include/status.json: signature coverage and uniqueness,dwXxxglobals versus their signature twins, globals in a data section, function targets after padding,pXxxglobals not in code, protobuf layouts versus the hand-verified engine structs, weapon-table coverage, plus the game'sClientVersion/PatchVersionfromsteam.inf. A failed check makes the dumper exit 1. Four of the five defects fixed in v2.1.5 would have been caught by these. -
Status on the site, API and bot: a Status tab and
GET /api/statuswith every check, its details, unresolved signatures and known issues; a banner on every page when a check failed;/statusin the Discord bot and a self-check line in its status embed. -
Self-healing signatures: when a database pattern stops matching after an update but the function did not change, the dumper re-finds it through the previous dump's 24 prologue bytes (
--previous, defaultinclude), generates a fresh unique pattern and publishes it with ahealed_fromfield.tools/verify/heal.py --applywrites those into the database. -
tools/verify/: the offline rescan (dbscan.py) and pattern generator (genpat.py) used for every release are in the repository.
CS2 updated to build 14184 on the evening of 2026-09-24 (client, server, engine2 and networksystem changed). Every module was re-analysed from scratch in IDA and the whole dump was checked, not just re-scanned. What was wrong, and is now fixed:
-
dwGameRulespointed at a vtable pointer in.rdata, not atg_pGameRules. It now uses the same read-site anchor as a2x and resolves to the global thepGameRulessignature already found (651 references). -
dwSensitivitywas thecl_leveloverviewConVar, notsensitivity(both are resolved through the same ConVarRef helper; the registration site names them). Re-anchored on thesensitivity * zoom_sensitivity_ratiosite, withdwSensitivity_sensitivity = 0x58(the value offset insideConVarInfo_t). ThepSensitivitysignature resolves to the same slot. -
dwSoundSystem_engineViewDatawas0x7C, read from a stack store in an unrelated function; the view block is at0x6C(movups [rdi+6Ch]in the view-setup writer). -
dwSoundSystemanddwNetworkGameClient_isBackgroundMaphad stopped resolving and were silently missing; both re-anchored. The classic globals are now the same 32 a2x publishes, and every one matches a2x's value for the build. -
CBaseUserCmdPBinprotobufs.json/protobufs.hppwas wrong: the reader sorted fields by number while libprotobuf's offset table is in declaration order, which shiftedviewangles,forwardmove,leftmove, … by one slot. Fixed at the source; the layout now agrees with_InternalParseand with the hand-verified engine struct. -
The generated headers did not compile under MSVC:
engine2_dll.hppusedCUtlStringTokenNoRegistrationwithout a declaration (it only appeared inside ausingalias the forward-declaration pass did not scan) andsoundsystem_dll.hppusedstd::unique_ptrwithout<memory>. Both fixed;cs2.hppnow compiles cleanly withcl /std:c++17and/std:c++20 /permissive-. - Signatures, verified entry by entry against fresh IDA analysis (function start, prototype, behaviour):
- two patterns started one byte into the function (
BulkRegenIterator,SDL_EventHandler) and published an RVA one byte late; -
CreateEntityByClassNamehad drifted onto a flex-controller warning; re-anchored on the client's networked entity creator (CL: Forcing ExecuteQueuedOperations …); - renamed to what the function does:
SetupCmd→GetUserCmdSequence,DrawOverHead→IsRenderingEnabledForSlot,UnlockInventory→IsInventoryUnlocked,DrawViewPunch2→CalcLocalPlayerView,DrawCrosshair→ShouldDrawCrosshair,DynamicLight_SetDieTime→GetGameTimeOrCurrent,CreateParticleEffect→Particles_SetControlPointPosition,AutowallInit→C_BaseModelEntity_UpdateOnRemove(vtable slot 14 of the model-entity classes),PrepareSceneMaterial→CMaterial2_GetFloatParam,UtlBuffer→CBufferString_Purge,LoadKeyValues→LoadKV3; - removed, because the name described a different function:
ReportHit(aCCLCMsg_HltvReplaydestructor),SetupMove(the quick-buy radial),SetupMovementMoves(a call site in a schema helper),AutowallTracePos(C_GlobalLightskybox slots),CCSGOInput_HandleViewAngles(an input-state reset),UpdatePostProcessing(watch-menu match selection),DrawLightScene(a struct copy), and the placeholdersUnknownParticleFunctionandSomeTimingFromPawn; - 162 prototypes filled in or refreshed from the current build's Hex-Rays output.
- two patterns started one byte into the function (
- 577 entries, 576 resolve, 0 ambiguous. Schema field offsets (9,249 compared), buttons and interface instances match a2x's dump exactly.
-
patterns/patterns.jsonis strict JSON:vaandrvaare hex strings ("0xB64A10"), as in every other file. Earlier dumps wrote them as bare hex literals, which standard JSON parsers reject. The one-entry-per-line, column-aligned layout is unchanged. -
/api/pattern/<name>resolves aliases, display names andmodule/Nameexactly like/api/query, and both report a folded-alias hit asmatch: "alias". - This wiki.
docs/in the repository mirrors it and replaces the out-of-date guides from June. - The Discord bot's source is in
discord-bot/.
- New signature
CSwapChainDx11_CreateSwapChain(rendersystemdx11.dll), requested on Discord:bool (this, IDXGIFactory*, device, flags); it callsIDXGIFactory::CreateSwapChainwith&this->m_pSwapChainas the out pointer. - New engine struct
CSwapChainDx11withm_pSwapChainat+0x170and theIDXGISwapChainslots hook authors need (8Present, 13ResizeBuffers, …). - 586 entries, 585 resolve, 0 ambiguous.
- Every function that was listed under two or three names was decompiled and checked. 41 groups are genuine aliases and are now published once with an
aliasesfield; 16 names described a different function and were removed:GetLocalControllerById,GetBonePositionByName,CGameTraceManager_TraceRay,SendChatMessage,DrawTeamIntro,RemoveLegs,TraceToExit,pVPhys2World,pGetBBox,CCSPlayerController_SwitchTeam, and six duplicates. -
CalculateInterpolation/GetCUserCmdTickwas misnamed under both names; it isCEntityInstance::GetEntityIndexand is published asCEntityInstance_GetEntityIndex. - Display names never strip a class down to a bare word (
CCSInventoryManager_Getstays). -
patterns.jsongainsunique_functionsand per-entryaliases;patterns.hppnotes aliases in comments. - 585 entries, 584 resolve, 0 ambiguous.
- The four entity I/O functions are back and verified:
CEntityInstance_AcceptInput,CEntityIdentity_AcceptInput,CEntitySystem_AddEntityIOEvent,CEntityIOOutput_FireOutputInternal. 600/601 resolve. - No pattern matches more than once any more (
CAM_ThinkReturn,NoClipOnChange,CBaseModelEntity_SetModel,PostProcessQuery,CBaseEntity_SetGravityScale,CTakeDamageInfoandCS2ItemEditor_BuildTemplateMaterialFromFilewere fixed). - New
offsets/offsets_all.json: every resolved global, tagged by kind. The site's Offsets tab shows all of them; it showed only the 29dwXxxones before. -
CHandle<T>::Get(),GetSerial(),==/!=inmacros.hpp, with the resolvers inimpl/entity_system.hpp. -
CCSCustomPlayerCamera(the renamedCSPlayerCamera) in the schema dump. - Site: automatic retry on transient errors; malformed requests get a 400; unknown hostnames pointed at the server are dropped.
- Resync to Steam client builds 2000914 / 2000915 (CS2 build 14183). 598/601 signatures: every one broken by the last few updates recovered and 98 new ones added, each verified in IDA with a Hex-Rays prototype — among them
HudVoiceStatus_SetVoiceData,CCSGOInput_AddInputHistoryEntry,HandleViewAngles,ReadFrameInput,ProcessInputEvent,C_CSPlayerPawn_GetAimPunch/GetAimPunchAtTick/GetInterpolatedShootPosition,CGlowProperty_GetGlowColor/IsGlowing, weapon, econ, inventory, prediction, trace and render functions, and new globals (pCSGOInputInstance,pDynamicLightManager,pPredictionPlayer,pMaterialManager,pEconItemSystem,pCSInventoryManager, …). - User-command engine structs:
CUserCmd(150-entry ring, 0x98 stride),CCSGOUserCmdPB,CBaseUserCmdPB,CSubtickMoveStep,CInButtonStatePB,CCSGOInputHistoryEntryPB,CSGOInterpolationInfoPB,CMsgQAngle,CMsgVector, each with offsets, has-bits and a drop-in.h. - All 44 weapons in
weapons.json. - Fixes: several signatures that matched but pointed at the wrong function (
pEntitySystem,FindHudElement,LevelShutdown,GetEconItemSystem,GetRemovedAimpunch,CheckJumpButton, …); raw patterns with anextra_offpublish the correct RVA; the weapon and entity walkers read their offsets from the schema of the same run; engine-struct function addresses come from the signature pass;patterns/is lowercase on every platform. - Site: batch API (
POST /api/query), bookmarks and collections, API page, Offsets tab, engine-structs panel.
- Resync to build 14175; two broken signatures recovered, three dead ones dropped (503/503).
- Since v2.0.0:
ViewModelHideZoomedandConvarGetrecovered on build 14172; engine struct layouts (CCSGOInput,CUserCmd,CViewSetup); the live entity snapshot; the game-events registry (273 events, typed fields); the weaponCCSWeaponBaseVDatatable.
- ConVar / ConCommand catalogue (
convars.json,convars.hpp) read from the tier0 registry: type, value, flags, description. - Interface vtables with RTTI class names (
vtables.json, typedinterfaces.hpp). - Schema headers with class size, parent and field metadata;
schemas.json.
- 16 signatures imported from cspatterns.dev; new icon.
- CS2 build 14162 resync and follow-ups.
- The first public series: one binary for offsets and signatures, the section-aware IDA-style scanner with
Rel32/RipRelresolution, hand-formattedsignatures.json, multi-language outputs, per-module schema headers,SCHEMA_FIELDSDK classes, interface accessors and the single-include amalgamation.
cs2-sdk.com · Releases · Issues · MIT