Skip to content
Back to skills

003 Name Skill 195a1fcc

ASecurity

Find and identify the CSource2Client_OnDisconnect function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 client.dll or libclient.so to locate the OnDisconnect function by searching for the "client_disconnect" and "reason_code" debug strings and analyzing cross-references to find the matching code pattern.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
tools

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 003-name-skill_195a1fcc --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 003 Name Skill 195a1fcc?

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

Security grade badge for 003 Name Skill 195a1fcc
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-003-name-skill-195a1fcc/badge)](https://www.skillsdirectory.com/skills/tools-only-003-name-skill-195a1fcc)

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

SKILL.md
---
name: find-CSource2Client_OnDisconnect
description: Find and identify the CSource2Client_OnDisconnect function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 client.dll or libclient.so to locate the OnDisconnect function by searching for the "client_disconnect" and "reason_code" debug strings and analyzing cross-references to find the matching code pattern.
disable-model-invocation: true
---

# Find CSource2Client_OnDisconnect

Locate `CSource2Client_OnDisconnect` in CS2 client.dll or libclient.so using IDA Pro MCP tools.

## Method

### 1. Search for the Debug Strings

```
mcp__ida-pro-mcp__find_regex pattern="client_disconnect"
mcp__ida-pro-mcp__find_regex pattern="reason_code"
```

### 2. Get Cross-References to Both Strings

```
mcp__ida-pro-mcp__xrefs_to addrs="<client_disconnect_string_addr>"
mcp__ida-pro-mcp__xrefs_to addrs="<reason_code_string_addr>"
```

### 3. Identify the Target Function

Find the function that has cross-references to BOTH "client_disconnect" and "reason_code" strings. This is `CSource2Client_OnDisconnect`.

Decompile the candidate function and verify it matches this code pattern:

```c
__int64 __fastcall CSource2Client_OnDisconnect(__int64 a1, unsigned int a2)
{
  // ...
  if ( (*(unsigned int (__fastcall **)(__int64, const char *))(*(_QWORD *)qword_XXXXXXXX + 104LL))(
         qword_XXXXXXXX,
         "client_disconnect") != -1 )
  {
    v3 = (*(__int64 (__fastcall **)(__int64, const char *, _QWORD, _QWORD))(*(_QWORD *)qword_XXXXXXXX + 48LL))(
           qword_XXXXXXXX,
           "client_disconnect",
           0LL,
           0LL);
    // ...
    LODWORD(v11) = sub_XXXXXXXX("reason_code", 11LL, ...);
    // ...
  }
  // ...
}
```

**Identification criteria:**
- The function references both "client_disconnect" and "reason_code" strings
- It takes two parameters: `(this_ptr, reason_code_value)` where `reason_code_value` is an unsigned int
- "client_disconnect" is used to check and create a game event
- "reason_code" is used as a key name to set the reason code field on the event

### 4. Rename the Function

```
mcp__ida-pro-mcp__rename batch={"func": [{"addr": "<function_addr>", "name": "CSource2Client_OnDisconnect"}]}
```

### 5. Generate Signature

**ALWAYS** Use SKILL `/generate-signature-for-function` to generate a robust and unique signature for the function.

### 6. Write IDA Analysis Output as YAML

**ALWAYS** Use SKILL `/write-func-as-yaml` to write the analysis results.

Required parameters:
- `func_name`: `CSource2Client_OnDisconnect`
- `func_addr`: The function address from step 3
- `func_sig`: The validated signature from step 5

## Function Characteristics

- **Type**: Non-virtual (regular) function
- **Parameters**: `(this_ptr, reason_code)` — this_ptr is the CSource2Client instance, reason_code is an unsigned int disconnect reason
- **Purpose**: Handles client disconnect by firing a "client_disconnect" game event with the given reason code

## Output YAML Format

The output YAML filename depends on the platform:
- `client.dll` → `CSource2Client_OnDisconnect.windows.yaml`
- `libclient.so` → `CSource2Client_OnDisconnect.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…