Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Find CCSPlayerController Respawn

ASecurity

Find and identify the CCSPlayerController_Respawn virtual function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the Respawn vfunc slot by RTTI-walking the CCSPlayerController vtable and confirming the candidate's decompiled body performs a full controller-state reset (networked flags, per-round fields, comeback/damage-info bookkeeping) rather than any other lifecycle vfunc. Trigger: CCSPlayerController_Respawn

3 stars
0 votes
0 copies
0 views
Added 9/27/2026
tools

Works with

mcp

Security Analysis

A100/100

Scanned 9/27/2026

Install to Claude Code

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

Installs into .claude/skills of the current project.

Are you the author of Find CCSPlayerController Respawn?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Find CCSPlayerController Respawn
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mrc4tt-find-ccsplayercontroller-respawn/badge)](https://www.skillsdirectory.com/skills/mrc4tt-find-ccsplayercontroller-respawn)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: find-CCSPlayerController_Respawn
description: |
  Find and identify the CCSPlayerController_Respawn virtual function in CS2 binary using IDA Pro MCP. Use this
  skill when reverse engineering CS2 server.dll or libserver.so to locate the Respawn vfunc slot by RTTI-walking
  the CCSPlayerController vtable and confirming the candidate's decompiled body performs a full controller-state
  reset (networked flags, per-round fields, comeback/damage-info bookkeeping) rather than any other lifecycle vfunc.
  Trigger: CCSPlayerController_Respawn
disable-model-invocation: true
---

# Find CCSPlayerController_Respawn

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

## Method

### 1. Load CCSPlayerController VTable

**ALWAYS** Use SKILL `/get-vtable-address` with `class_name=CCSPlayerController` to RTTI-walk the primary vtable.

```text
mcp__ida-pro-mcp__find_regex pattern="19CCSPlayerController"
mcp__ida-pro-mcp__xrefs_to addrs="<name_string_addr>"      # hit - 8 = typeinfo
mcp__ida-pro-mcp__xrefs_to addrs="<typeinfo_addr>"          # hit - 8 = vtable candidate, keep offset_to_top==0
```

Search for the mangled typeinfo name string `19CCSPlayerController` (**not** the many longer
`N19CCSPlayerController...NetworkVar_...EE` template-instantiation strings that also contain the substring — those
are unrelated `CNetworkVarBase`/`CNetworkHandle` instantiations, not the class's own RTTI name). The class's own
typeinfo name is the standalone `<len>ClassName` string with no further `N...E` nesting after it.

> Linux 14168 reference: name string `19CCSPlayerController` at `0x81ef30`, typeinfo at `0x2487778`, primary
> vtable at `0x24885b0` (`offset_to_top == 0`).

### 2. Read VTable Slot 272

Since `CCSPlayerController` inherits `Respawn` from `CBasePlayerController` at a fixed, ABI-stable slot index
(Itanium single-inheritance derived-class vtables preserve base-class slot ordering), the slot number is portable
across builds even though the function's own address is not. Read the function pointer directly:

```text
mcp__ida-pro-mcp__get_int addr="<vtable_va> + 0x10 + 272*8" ty="u64"
```

> Linux 14168 reference: `vtable_va = 0x24885b0`, slot 272 address `0x24885b0 + 0x10 + 272*8 = 0x2488e40`,
> function pointer `0x14e5870`, size `0x2A3` (675 bytes).

### 3. Confirm the Candidate

Decompile the resolved function and confirm it matches `Respawn()`-shaped semantics:

```text
mcp__ida-pro-mcp__decompile addr="<slot_272_func_addr>"
```

Identification rules:
1. Single argument (`this` only) — `Respawn()` takes no parameters.
2. The body is a broad member-state reset: dozens of direct byte/dword/qword writes to `this`-relative offsets
   spread across a wide range (hundreds of bytes apart), zeroing/defaulting networked per-life fields.
3. Near the top, it clears a "pending state change" flag pattern via the class's generic networked-bool-setter
   helper (`this+2993` bool cleared through a `CNetworkTransmitComponent::StateChanged`-style call, matching the
   pattern seen throughout this class's other setters) before falling into the bulk reset.
4. It reads a global respawn/spawn-protection time constant (`off_261F328`-style float array) and clamps a
   per-controller timestamp field (`this+1336`) against it — a spawn-protection-timer initialization step
   distinctive to `Respawn`.
5. As a sanity cross-check, confirm slot 271 and slot 273 (the immediate neighbors) decompile to visibly smaller,
   differently-shaped functions (e.g. simple accessors) — `Respawn` should stand out as one of the larger,
   broad-reset functions in its immediate slot neighborhood.

If the candidate does not match, **STOP** and report to user.

### 4. Generate Function Signature

**ALWAYS** Use SKILL `/generate-signature-for-function` with `addr=<Respawn_func_addr>` to generate a robust and
unique `func_sig`.

### 5. Write IDA Analysis Output as YAML

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

Required parameters:
- `func_name`: `CCSPlayerController_Respawn`
- `func_addr`: `<Respawn_func_addr>`
- `func_sig`: The validated signature from step 4

VTable parameters:
- `vtable_name`: `CCSPlayerController`
- `vfunc_offset`: `0x880` (`272 * 8`)
- `vfunc_index`: `272`

## Function Characteristics

- **Purpose**: Resets a `CCSPlayerController`'s per-life networked state on respawn — clears pending-damage,
  comeback, and per-round bookkeeping fields and re-arms the spawn-protection timer.
- **Binary**: `server.dll` / `libserver.so`
- **Parameters**: `(this)` only
- **Return value**: not consumed by callers in the decompiled body observed (effectively `void`)
- **VTable**: `CCSPlayerController`, slot **272** (`vfunc_offset = 0x880`) on the Linux 14168 reference build,
  inherited-slot position (`INHERIT_VFUNCS` relation to `CBasePlayerController_Respawn`).

## Discovery Strategy

1. RTTI-walk `CCSPlayerController`'s primary vtable via its own (non-template) typeinfo name string.
2. Read slot 272 directly — the slot index is stable across builds because it derives from `CBasePlayerController`
   base-class layout, which the Itanium ABI guarantees stays contiguous in the derived class's vtable regardless
   of how many further overrides `CCSPlayerController` itself adds afterward.
3. Confirm the resolved function's decompiled body matches the broad per-life state-reset + spawn-protection-timer
   pattern unique to `Respawn`.

This is robust because:
- The vtable slot index is derived from ABI-guaranteed base-class layout, not from a fragile byte offset or string
  xref, so it survives most recompiles as long as `CBasePlayerController`'s own vfunc ordering is unchanged.
- The broad multi-field reset + spawn-protection-timer-clamp shape is distinctive enough to disambiguate `Respawn`
  from neighboring accessor-style vfuncs even without a known reference sig.

## Output YAML Format

The output YAML filename depends on the platform:
- `server.dll` -> `CCSPlayerController_Respawn.windows.yaml`
- `libserver.so` -> `CCSPlayerController_Respawn.linux.yaml`

Fields: `func_name`, `func_va`, `func_rva`, `func_size`, `func_sig`, `vtable_name`, `vfunc_offset`, `vfunc_index`.

Attribution

mrc4ttmrc4tt
View sourceMore from mrc4tt →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

ucoz-landing-skill

Playbook for creating and editing uCoz landing pages via MCP tools (`templates_tool`, `ftp_tool`, `modules_tool`). Use for tasks such as: "build a landing page", "update the homepage as a landing page", "create a promo page on the homepage", "add a lead form / menu / SEO to the homepage". Homepage: `page_list`, `page_get`; first publish — `page_update` with full `page_tmpl`; HTML edits after generation — `patch_template` (module_id=2, template_id=1), not `update_template`. Activate the mail f...

107 votes

Paperclip

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

813271 votes

Instantly Rdsthomas Mission Control

Instantly.ai cold email outreach API - manage campaigns, leads, accounts, and analytics. Use for cold email automation, lead management, campaign creation/monitoring, and email account warmup.

761 votes

Daw Music

Digital Audio Workstation usage, music composition, interactive music systems, and game audio implementation for immersive soundscapes.

761 votes

Caveman Compress

Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format to save input tokens. Preserves all technical substance, code, URLs, and structure. Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md. Trigger: /caveman-compress FILEPATH or "compress memory file"

1074700 votes
View all in tools →