HLND2T
- 51 skills
- 0 followers
- 1 hour ago last updated
- ▌ Generate Signature For Structoffset · hlnd2tGenerate and validate unique byte signatures for instructions containing a struct member offset using IDA Pro MCP. Use this skill when you need a signature for an instruction like mov [rcx+1A8h], eax or cmp dword ptr [rdi+0B0h], 0, where the struct offset must be explicitly fixed in the first instruction bytes. Triggers: struct offset signature, signature for struct offset, structure member offset signature, mov [reg+offset] signature, struct field signature
- ▌ Find Cnetworkmessages Getisforserver · hlnd2tFind and identify the CNetworkMessages_GetIsForServer virtual function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 networksystem.dll or libnetworksystem.so to locate the GetIsForServer vfunc by reusing the known CNetworkMessages_SetIsForServer slot and checking the adjacent CNetworkMessages vtable entry. Trigger: CNetworkMessages_GetIsForServer
- ▌ Find Cnetworkgameserver Getfreeclient · hlnd2tFinal-guarantee fallback for CNetworkGameServer_GetFreeClient. Locate the concrete free-client allocator in CS2 engine2.dll / libengine2.so when the ConnectClient decompile preprocessor cannot resolve it. Use only after the deterministic preprocessor returns failure. Trigger: CNetworkGameServer_GetFreeClient
- ▌ Find Ivengineserver2 Getclientsteamid · hlnd2tFinal-guarantee fallback for the find-IVEngineServer2_GetClientSteamID preprocessor. Recovers IVEngineServer2::GetClientSteamID (a virtual function of the IVEngineServer2 interface) in CS2 server.dll / libserver.so by decompiling its known predecessor CBasePlayerController_HandleCommand_JoinTeam and identifying the vtable-slot fetch on g_engine. Use this skill only when the deterministic/LLM preprocessor (ida_preprocessor_scripts/find-IVEngineServer2_GetClientSteamID.py) could not resolve the target. Trigger: IVEngineServer2_GetClientSteamID
- ▌ Find Ccsbotmanager Addbot Botnavignore · hlnd2tFind and patch the g_pNavMesh null-check inside CCSBotManager_AddBot in CS2 binary using IDA Pro MCP. This patch removes the navigation mesh requirement so bots can be added even without a nav mesh loaded. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate and patch the nav mesh check in AddBot. Trigger: bot nav ignore, AddBot nav mesh patch, bot without nav, CCSBotManager nav ignore
- ▌ Find Cnetworkmessages Vtable Decompiles · hlnd2tFind and identify CNetworkMessages_AllowAdditionalMessageRegistration and CNetworkMessages_IsAdditionalMessageRegistrationAllowed virtual functions in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 networksystem.dll or libnetworksystem.so to locate both vfuncs by reusing the known CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal slot and checking the two adjacent CNetworkMessages vtable entries. Trigger: CNetworkMessages_AllowAdditionalMessageRegistration, CNetworkMessages_IsAdditionalMessageRegistrationAllowed
- ▌ Find Ccsgamerules Sm Mapgcbaninformation · hlnd2tFind and identify the CCSGameRules__sm_mapGcBanInformation global variable in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the GC ban information map structure by decompiling CCSPlayerController_ResourceDataThink's sub-function (Linux) or searching for the "Notification about user penalty" string (Windows).
- ▌ Find Inetworkserverservice Isactiveingame · hlnd2tFinal-guarantee fallback for the find-INetworkServerService_IsActiveInGame preprocessor. Recovers INetworkServerService::IsActiveInGame (a virtual function of the CNetworkServerService vtable) in CS2 engine2.dll / libengine2.so by decompiling its known predecessor CSteam3ServerS1_InitGameServer and identifying the virtual call on g_pNetworkServerService. Use this skill only when the deterministic/LLM preprocessor (ida_preprocessor_scripts/find-INetworkServerService_IsActiveInGame.py) could not resolve the target. Trigger: INetworkServerService_IsActiveInGame
- ▌ Find Cserversideclientbase Getuseridstring · hlnd2tFinal-guarantee fallback for CServerSideClientBase_GetUserIDString when its deterministic string-xref preprocessor cannot resolve the function. Locate the concrete user-ID formatting helper in engine2.dll / libengine2.so and write the semantic artifact for the active platform. Trigger: CServerSideClientBase_GetUserIDString
- ▌ Find Inetworkserverservice Isserverrunning · hlnd2tFinal-guarantee fallback for the find-INetworkServerService_IsServerRunning preprocessor. Recovers INetworkServerService::IsServerRunning (a virtual function of the CNetworkServerService vtable) in CS2 engine2.dll / libengine2.so by decompiling its known predecessor CNetworkGameClientBase__ProcessNetworking and identifying the virtual call on g_pNetworkServerService. Use this skill only when the deterministic/LLM preprocessor (ida_preprocessor_scripts/find-INetworkServerService_IsServerRunning.py) could not resolve the target. Trigger: INetworkServerService_IsServerRunning
- ▌ Fix Cppheaders · hlnd2t bundleUse when hl2sdk_cs2 C++ headers must be repaired to match the latest vtable or record-layout YAML references. Runs run_cpp_tests.py to obtain layout diffs, maps failing cpp_tests entries to their configured headers, edits only those headers, and repeats validation until the differences are resolved. Triggers: fix cpp headers, fix-cppheaders, repair vtable layout, repair record layout, header layout differences.
- ▌ Create Cpp Tests · hlnd2t bundleCreate a new cpp_tests entry for validating a C++ interface vtable layout against binary reference YAMLs. Creates the .cpp test file in cpp_tests/ and appends a configs/<GAMEVER>.yaml entry under cpp_tests:. Use when a user asks to add vtable layout validation for a new hl2sdk_cs2 interface class.
- ▌ Get Vtable Index · hlnd2tFind a function's vtable offset and index using IDA Pro MCP. Use this skill when you have a function address and need to determine its position in a vtable by iterating through vtable entries. Triggers: vtable index, vftable offset, virtual function table position, find function in vtable
- ▌ Run Vcall Finder · hlnd2t bundleRun this repository's ad hoc vcall_finder workflow for explicitly selected CS2 modules and one or more symbol names. Use when asked to temporarily find virtual calls for named symbols without registering them in a versioned analysis config.
- ▌ Cleanup Workspace · hlnd2t bundleClean up the local workspace after a dev branch has been merged into main. Verifies the current dev branch is fully merged into origin/main, then switches to main, pulls the latest, deletes the local dev branch, and deletes the remote dev branch if it still exists. STOPS and warns the user if the current branch is not yet merged. Triggers: cleanup workspace, cleanup branch, delete merged branch, finish dev branch, post-merge cleanup
- ▌ Get Func From YAML · hlnd2tLoad function information from a pre-generated YAML file. Use this skill when you need function address, size, signature, and optional vtable metadata before downstream analysis. This skill checks for existing function YAML files and errors out if not found.
- ▌ Get Vtable Address · hlnd2tFind a function's vtable address using IDA Pro MCP. Use this skill when want to get exact virtual address of a class. Triggers: get vftable address, get virtual function table, find vtable, get vtable
- ▌ Write Func As YAML · hlnd2tWrite function analysis results as YAML file beside the binary using IDA Pro MCP. Use this skill after completing function identification and signature generation to persist the results in a standardized YAML format. For virtual functions with known vtable index, use write-vfunc-as-yaml instead.
- ▌ Resolve Pr Conflict · hlnd2t bundleResolve an open same-repository GitHub PR conflict by merging its base into the writable dev head, resolving source and config intent semantically, rebuilding conflicted source-owned `bin_artifacts` plus downstream closure, running the repository review/format/test gates, creating one merge commit, and pushing without force. Stop after reporting PR checks; never merge or auto-merge the PR.
- ▌ Write Patch As YAML · hlnd2tWrite patch analysis results, including patch_sig match VA/RVA, as a YAML file beside the binary using IDA Pro MCP. Use this skill after identifying a patch target and generating a unique signature to persist patch_name, patch_va, patch_rva, patch_sig, optional patch_sig_disp, and patch_bytes in a standardized format.
- ▌ Write Vfunc As YAML · hlnd2tWrite virtual function analysis results as YAML file beside the binary using IDA Pro MCP. Use this skill after completing virtual function identification, signature generation, and vtable analysis to persist the results in a standardized YAML format.
- ▌ Get Vtable From YAML · hlnd2tLoad vtable information from a pre-generated YAML file. Use this skill when you need to get vtable address and size for a class before analyzing virtual functions. This skill checks for existing vtable YAML files and errors out if not found, ensuring the vtable analysis has been done first.
- ▌ Write Vtable As YAML · hlnd2tWrite vtable analysis results as YAML file beside the binary using IDA Pro MCP. Use this skill after locating a vtable to persist the results in a standardized YAML format.
- ▌ Trigger Release Build · hlnd2t bundleSafely dispatch an immutable source-owned Release verification or publication from the current origin/main SHA. Use only when explicitly asked to verify, publish, or rebuild a game version.
- ▌ Generate Reference YAML · hlnd2t bundleGenerate reference YAML via project CLI into ida_preprocessor_scripts/references/<module>/<func_name>.<platform>.yaml
- ▌ Write Globalvar As YAML · hlnd2tWrite global variable analysis results as YAML file beside the binary using IDA Pro MCP. Use this skill after completing global variable identification and signature generation to persist the results in a standardized YAML format.
- ▌ Find Cnetworkmessages Dtor · hlnd2tFind and identify the CNetworkMessages destructor virtual function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 networksystem.dll or libnetworksystem.so to locate the CNetworkMessages_dtor vfunc by scanning the last three entries of the CNetworkMessages vtable. Trigger: CNetworkMessages_dtor
- ▌ Write Structoffset As YAML · hlnd2tWrite struct member offset analysis results as YAML file beside the binary using IDA Pro MCP. Use this skill after identifying a struct member offset and optionally generating a signature for it to persist the results in a standardized YAML format.
- ▌ Create Agent Skill Fallback · hlnd2t bundleCreate an Agent SKILL.md fallback for an existing find-XXXX finder that relies on a fragile discovery foundation — above all LLM_DECOMPILE (patterns C/D/E), which matches the decompiled shape of a predecessor function against a stored reference and breaks when a symbol is inlined or de-inlined in a way the reference does not cover. The generated fallback coexists with the preprocessor and runs only when it returns failure, recovering every target robustly by decompiling the predecessor and following the inline/de-inline boundary with semantic anchors. Use when a finder broke on a game update, or you want to durably backstop one before it does. The recipe generalizes to any finder foundation. Triggers: create agent skill fallback, add SKILL.md fallback, robust fallback for finder, backstop LLM_DECOMPILE finder, final guarantee skill
- ▌ Create Preprocessor Scripts · hlnd2t bundleCreate a new find-XXXX preprocessor Python script from scratch (no existing SKILL.md), add configs/<GAMEVER>.yaml skill and symbol entries. Covers xref-string-based and LLM_DECOMPILE-based discovery patterns. Use when a GitHub issue or user instruction specifies a new function to find.
- ▌ Rename Preprocessor Scripts · hlnd2t bundleRename a symbol (function, vfunc, vtable, struct member, global variable) across all preprocessor scripts, configs/<GAMEVER>.yaml entries, and tracked source-owned YAML artifacts. Use when a symbol's name changes (class rename, naming-convention fix, etc.), or when splitting a single finder into an inline/noinline fallback chain because a helper de-inlined and the target's YAML stopped being produced on some gamever/platform.
- ▌ Generate Signature For Patch · hlnd2tGenerate and validate unique byte signatures for instructions that need to be runtime-patched using IDA Pro MCP. Use this skill when you need a signature to locate a specific instruction for patching (e.g., force/skip a branch, NOP a call, change an immediate operand). Triggers: patch signature, signature for patch, patch instruction signature, nop signature, jump patch signature, skip branch signature, force branch signature
- ▌ Generate Signature For Function · hlnd2tGenerate and validate unique byte signatures for functions using IDA Pro MCP. Use this skill when you need to create a pattern-scanning signature for a function that can reliably locate it across binary updates. Triggers: generate signature, byte signature, pattern signature, function signature, unique signature, sig for function
- ▌ Run Validation Until No Failure · hlnd2t bundleUse when the user wants to run the IDA validation pipeline (`uv run ida_analyze_bin.py -debug`) repeatedly until it reports zero failures. For each failing skill, diagnose the failure, ask the user how to proceed, and offer several viable solutions. Only when the user explicitly says the failure cannot be solved now and asks to temporarily disable the skill, comment it out in configs/<GAMEVER>.yaml and record it in docs/ida_validation_failure-<GAMEVER>.md. Use after a game-version bump or a large batch of new skills when several skills may fail and you want a guided triage-and-quarantine pass. Triggers: run validation until no failure, validate until green, get validation passing, disable failing skills, quarantine failing skills, loop ida_analyze_bin until no failures
- ▌ Find Centitysystem M Entitynames · hlnd2tFinal-guarantee fallback for the find-CEntitySystem_m_entityNames preprocessor. Recovers CEntitySystem::m_entityNames in CS2 server.dll / libserver.so by decompiling CEntitySystem_AddEntityToNameMap and recognizing its ordered-map/RB-tree lookup whether the lookup helper is emitted as a separate function or inlined into the predecessor. Use when ida_preprocessor_scripts/find-CEntitySystem_m_entityNames.py cannot resolve the member because the LLM_DECOMPILE reference shape moved across the inline boundary. Trigger: CEntitySystem_m_entityNames
- ▌ Generate Signature For Globalvar · hlnd2tGenerate and validate unique byte signatures for global variable using IDA Pro MCP. Use this skill when you need to create a pattern-scanning signature for a global variable that can reliably locate it across binary updates. Triggers: global variable signature, signature for global variable
- ▌ Find Centitysystem Init Decompiles · hlnd2tFinal-guarantee fallback for the find-CEntitySystem_Init-decompiles preprocessor. Recovers the struct members, indirect virtual-function offsets, and de-inlined helpers that CEntitySystem::Init sets up, by decompiling CEntitySystem_Init in CS2 server.dll / libserver.so and following de-inlined callees when a target is no longer accessed directly. Use this skill when the deterministic/LLM preprocessor (ida_preprocessor_scripts/find-CEntitySystem_Init-decompiles.py) could not resolve every target because a member or vfunc was inlined or de-inlined in a way the LLM_DECOMPILE references do not cover. Trigger: CEntitySystem_m_sEntSystemName, CEntitySystem_m_eNetworkSerializationMode, CEntitySystem_m_Symbols, CEntitySystem_m_ComponentUnserializerInfoAllocator, CEntitySystem_m_pNetworkFieldChangedEventQueue, CEntitySystem_m_pNetworkFieldScratchData, CEntitySystem_m_pFieldChangeLimitSpew, CEntitySystem_m_EntityMaterialAttributes, INetworkMessages_SetNetworkSerializationContextData, IFlattenedSerializers_CreateFieldCh
- ▌ Generate Signature For Vfuncoffset · hlnd2tGenerate and validate unique byte signatures for instructions containing a virtual-function offset using IDA Pro MCP. Use this skill when you need a signature for an instruction like call qword ptr [rax+538h], where the vfunc offset (0x538) must be explicitly fixed in the first instruction bytes. Triggers: vfunc offset signature, signature for vfunc offset, virtual function offset signature, call [reg+offset] signature
- ▌ Create Pr · hlnd2t bundleCreate a GitHub pull request from staged task changes or an already-committed current branch. Deliver source/config/ reference changes together with their computed source-owned `bin_artifacts` closure. PR validation routing is owned by the default-branch trusted workflow; snapshots, gamedata, and manifests are Release-derived only.
- ▌ Dump Vtables · hlnd2t bundleBatch-dump vtables from IDA Pro MCP by searching mangled symbol patterns, then write a merged YAML file beside the binary. Use this skill when you need to find and export all vtables matching a name pattern (e.g., all GameSystem vtables) in one shot. Triggers: dump vtables, batch vtable dump, export vtables, dump all vtables matching pattern
- ▌ Init Gamebin · hlnd2t bundleInitialize this repository's disposable local game binaries and per-binary BinSync auto-recovery sidecars for an exact GAMEVER from download.yaml or its latest entry. Use only when explicitly asked to initialize gamebin/bin state for a CS2 game version.
- ▌ Find Onservervoicedata Isplayingdemo Callee · hlnd2tGenerate the Windows-only OnServerVoiceData_IsPlayingDemo_Callee patch YAML from IVEngineClient2_IsPlayingDemo.windows.yaml using a deterministic preprocessor script. Use when locating the IVEngineClient2::IsPlayingDemo indirect call inside C_ServerVoiceHandler::OnServerVoiceData without LLM decompilation. Trigger: OnServerVoiceData IsPlayingDemo callee, voice demo call patch, IsPlayingDemo callsite
- ▌ Convert Finder Skill To Preprocessor Scripts · hlnd2t bundleConvert an existing find-XXXX SKILL.md into a preprocessor Python script, updating configs/<GAMEVER>.yaml and removing the old SKILL.md. Covers xref-string-based and LLM_DECOMPILE-based discovery patterns.
- ▌ Find Cbaseentity Getchangeaccessorpathinfo 1 · hlnd2tFind and identify the CBaseEntity_GetChangeAccessorPathInfo_1 virtual function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the second GetChangeAccessorPathInfo override by scanning CBaseEntity vtable slots near the known CBaseEntity_GetChangeAccessorPathInfo_2 slot for an implementation identical to CBaseEntity_GetChangeAccessorPathInfo_2. Trigger: CBaseEntity_GetChangeAccessorPathInfo_1
- ▌ Find Cnetworkgameserverbase Createfakeclient · hlnd2tFinal-guarantee fallback for the find-CNetworkGameServerBase_CreateFakeClient preprocessor. Recovers CNetworkGameServerBase_CreateFakeClient in CS2 engine2.dll / libengine2.so when the string-xref preprocessor cannot resolve the function. Use this skill only after the deterministic preprocessor returns failure. Trigger: CNetworkGameServerBase_CreateFakeClient
- ▌ Find Cnetworkgameserverbase Getchallengetype · hlnd2tAgent fallback for the find-CNetworkGameServerBase_GetChallengeType preprocessor. Locates the CNetworkGameServerBase_GetChallengeType virtual function in CS2 engine2.dll / libengine2.so by decompiling its caller CNetworkGameServerBase_ReplyChallenge and reading the first virtual dispatch made on the server this-pointer. Use this skill only when the deterministic/LLM preprocessor (ida_preprocessor_scripts/find-CNetworkGameServerBase_GetChallengeType.py) could not resolve the vfunc — for example when the LLM_DECOMPILE step failed with a transient API error. Trigger: CNetworkGameServerBase_GetChallengeType
- ▌ Find Inetworkserverservice Getserverserializerscrc · hlnd2tFinal-guarantee fallback for the find-INetworkServerService_GetServerSerializersCRC preprocessor. Recovers INetworkServerService::GetServerSerializersCRC (a virtual function of the CNetworkServerService vtable) in CS2 engine2.dll / libengine2.so by decompiling its known predecessor CNetworkGameServer_WriteClassInfosAndSerializesToBuffer and identifying the virtual call on g_pNetworkServerService. Use this skill only when the deterministic/LLM preprocessor (ida_preprocessor_scripts/find-INetworkServerService_GetServerSerializersCRC.py) could not resolve the target. Trigger: INetworkServerService_GetServerSerializersCRC
- ▌ Find Cnetworkgameserverbase Checktimeouts Decompiles · hlnd2tAgent fallback for the find-CNetworkGameServerBase_CheckTimeouts-decompiles preprocessor. Locates the CNetworkGameServerBase_IsHLTV virtual function in CS2 engine2.dll / libengine2.so by decompiling its caller CNetworkGameServerBase_CheckTimeouts and reading the virtual dispatch made on the server this-pointer that gates the server-decided-timeout path. Use this skill only when the deterministic/LLM preprocessor (ida_preprocessor_scripts/find-CNetworkGameServerBase_CheckTimeouts-decompiles.py) could not resolve the vfunc — for example when the LLM_DECOMPILE step failed with a transient API error. Trigger: CNetworkGameServerBase_IsHLTV
- ▌ Find Ccsplayer Movementservices Fullwalkmove Speedclamp · hlnd2tFind and identify the velocity clamping branch inside CCSPlayer_MovementServices_FullWalkMove in CS2 binary using IDA Pro MCP, then generate a patch signature to disable it. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate and patch the speed-clamp if-branch that caps player velocity to maxspeed inside FullWalkMove. Trigger: FullWalkMove speed clamp, velocity clamping patch, FullWalkMove SpeedClamp, disable maxspeed clamp
- ▌ Find Cnetworkmessages Getnetworkserializationcontextdata · hlnd2tFind and identify the CNetworkMessages_GetNetworkSerializationContextData virtual function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 networksystem.dll or libnetworksystem.so to locate the getter vfunc by reusing the known CNetworkMessages_SetNetworkSerializationContextData slot and checking the adjacent CNetworkMessages vtable entry. Trigger: CNetworkMessages_GetNetworkSerializationContextData
- ▌ Find Ccsplayer Movementservices Checkjumpbutton Waterpatch · hlnd2tFind and patch the water jump velocity inside CCSPlayer_MovementServices_CheckJumpButton in CS2 binary using IDA Pro MCP. This patch changes the water jump velocity from 100.0f to 145.0f by modifying the immediate operand of a mov instruction. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate and patch the water jump height value. Trigger: water jump patch, CheckJumpButton water velocity, jump height patch, water jump 145