Skip to content
Back to skills

Find CCSGameRules ResetRound

ASecurity

Find and identify the CCSGameRules_ResetRound function in CS2 server binary using IDA Pro MCP. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the round-reset routine. It is the only function that references the "GMR_ResetRound\n" debug log string, and is the predecessor anchor for find-CCSGameRules_PostCleanUp (which it calls). Emits a unique IDA-style byte signature and a func YAML. Mirrors the find-CCSGameRules_ResetRound.py preprocessor (xref_strings "GMR_...

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
tools

Works with

  • mcp

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add mrc4tt/CS2_VibeSignatures --skill find-CCSGameRules_ResetRound --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Find CCSGameRules ResetRound?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Find CCSGameRules ResetRound
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mrc4tt-find-ccsgamerules-resetround/badge)](https://www.skillsdirectory.com/skills/mrc4tt-find-ccsgamerules-resetround)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: find-CCSGameRules_ResetRound
description: |
  Find and identify the CCSGameRules_ResetRound function in CS2 server binary using IDA Pro MCP.
  Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the round-reset
  routine. It is the only function that references the "GMR_ResetRound\n" debug log string, and is
  the predecessor anchor for find-CCSGameRules_PostCleanUp (which it calls). Emits a unique IDA-style
  byte signature and a func YAML. Mirrors the find-CCSGameRules_ResetRound.py preprocessor
  (xref_strings "GMR_ResetRound\n").
  Trigger: CCSGameRules_ResetRound, ResetRound, GMR_ResetRound
disable-model-invocation: true
---

# Find CCSGameRules_ResetRound

Locate `CCSGameRules_ResetRound` in CS2 `server.dll` or `libserver.so` using IDA Pro MCP tools.

This is a **non-virtual, direct-call** member function (no vtable slot — emit a byte sig, not an
offset). It is the **predecessor anchor** for `CCSGameRules_PostCleanUp`: ResetRound directly calls
PostCleanUp, and PostCleanUp has no unique string of its own, so PostCleanUp is resolved downstream
by decompiling ResetRound.

**Primary resolution = the unique debug string** `"GMR_ResetRound\n"`. Exactly one function
references it: `CCSGameRules::ResetRound`.

## Method

### 1. Reuse previous signature (fast path)

If a prior `CCSGameRules_ResetRound.{platform}.yaml` exists, try its `func_sig` via
`mcp__ida-pro-mcp__find_bytes`. Single match → resolve to function start, skip to Step 4. Else continue.

### 2. Locate the anchor string and its referencer

```
mcp__ida-pro-mcp__find            type="string"  targets=["GMR_ResetRound"]
mcp__ida-pro-mcp__xrefs_to        addrs="<string_va>"
```

`"GMR_ResetRound\n"` has **exactly one** code referencer — that function is `ResetRound`. Record
`func_addr` (the containing function start). Optionally rename it to `CCSGameRules_ResetRound`.

### 3. Confirm (optional)

Decompile and confirm it is a round-reset routine: logs `GMR_ResetRound`, then performs the reset
sequence including the call to the entity-cleanup helper (`CCSGameRules_PostCleanUp`).

### 4. Generate signature

**ALWAYS** use SKILL `/generate-signature-for-function` with `addr=<func_addr>`. Emit IDA style
verbatim (space hex, `?` wildcards).

Reference sig (build 14165 — sanity check only, regenerate per binary):
- linux: `55 BE ? ? ? ? 48 89 E5 41 54 53 48 89 FB 48 83 EC ? 4C 8D 25 ? ? ? ? 41 8B 3C 24 E8 ? ? ? ? 84 C0 0F 85 ? ? ? ? F3 0F 10 83`

### 5. Write func YAML

**ALWAYS** use SKILL `/write-func-as-yaml`:
- `func_name`: `CCSGameRules_ResetRound`
- `func_addr`: `<func_addr>`
- `func_sig`: validated sig from step 4

## Function Characteristics

- **Linkage**: non-virtual, direct-call (no vtable entry)
- **Binary**: `server.dll` / `libserver.so`
- **Distinguishing trait**: only referencer of `"GMR_ResetRound\n"`; calls `CCSGameRules_PostCleanUp`

## Discovery Strategy (why this is stable across updates)

`"GMR_ResetRound\n"` is a durable debug log string with a single referencer, so ResetRound
re-resolves deterministically each game update. The final byte sig is regenerated per binary, so it
self-heals once the function is re-resolved.

## Preprocessor pipeline equivalent

```
find-CCSGameRules_ResetRound        [xref_strings "GMR_ResetRound\n"]
 -> find-CCSGameRules_PostCleanUp    [LLM_DECOMPILE ResetRound, entity-cleanup callee]
```

## Output YAML Format

- `server.dll`   -> `CCSGameRules_ResetRound.windows.yaml`
- `libserver.so` -> `CCSGameRules_ResetRound.linux.yaml`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…