Skip to content
Back to skills

Find CPlayer ObserverServices IsValidObserverTarget

ASecurity

Locate CPlayer_ObserverServices::IsValidObserverTarget in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "CPlayer_ObserverServices::IsValidObserverTarget" (symbol CPlayer_ObserverServices_IsValidObserverTarget). The gamedata consumer stores a BYTE SIGNATURE for this entry - ALWAYS emit the func schema (func_sig), never vfunc fields. The function may be virtual; locating it via the owning class vtable (RTTI) is a ...

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 9, 2026
devops

Works with

  • mcp

Security analysis

A100/100

Scanned November 9, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Find CPlayer ObserverServices IsValidObserverTarget?

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

Security grade badge for Find CPlayer ObserverServices IsValidObserverTarget
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mrc4tt-find-cplayer-observerservices-isvalidobservertarge/badge)](https://www.skillsdirectory.com/skills/mrc4tt-find-cplayer-observerservices-isvalidobservertarge)

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-CPlayer_ObserverServices_IsValidObserverTarget
description: |
  Locate CPlayer_ObserverServices::IsValidObserverTarget in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique
  signature or offset for the local gamedata entry "CPlayer_ObserverServices::IsValidObserverTarget" (symbol CPlayer_ObserverServices_IsValidObserverTarget). The gamedata consumer stores a BYTE SIGNATURE for this entry - ALWAYS emit the func
  schema (func_sig), never vfunc fields. The function may be virtual; locating it via
  the owning class vtable (RTTI) is a fine strategy, but once found, read its head bytes
  and emit func_sig. Locate via cross-references, distinctive constants/strings, callers
  of related symbols, or vtable slots; verify by decompilation before committing.
  Trigger: CPlayer_ObserverServices_IsValidObserverTarget, CPlayer_ObserverServices::IsValidObserverTarget
disable-model-invocation: true
---

# Find CPlayer_ObserverServices_IsValidObserverTarget

Target: `CPlayer_ObserverServices::IsValidObserverTarget` (func) in the CS2 server module.

> Do NOT anchor on raw byte patterns from older releases - they shift. Use anchors only to *locate*
> the function, then generate a fresh minimal-unique function-head signature with relocated bytes
> wildcarded. Produce ONLY the output file(s) listed in this skill's expected outputs, for the binary
> loaded in THIS session (one platform per run). NEVER open or analyze the other platform's binary.

## Method

The gamedata consumer stores a BYTE SIGNATURE for this entry - ALWAYS emit the func
schema (func_sig), never vfunc fields. The function may be virtual; locating it via
the owning class vtable (RTTI) is a fine strategy, but once found, read its head bytes
and emit func_sig. Locate via cross-references, distinctive constants/strings, callers
of related symbols, or vtable slots; verify by decompilation before committing.

## Mandatory self-check before emitting

The pipeline re-reads the bytes at your `func_va` and deterministically regenerates `func_sig` from
them - if your `func_sig` does not match those bytes EXACTLY (with `??` matching anything), the run
aborts. Therefore:

1. After picking the function, read the actual bytes at `func_va` via the IDA MCP.
2. Derive `func_sig` FROM those bytes: keep stable opcode bytes literally, wildcard relocated or
   variable operands as `??`.
3. `func_sig` MUST start at `func_va` (the true function head).
4. Only then write the YAML. A mismatch is always a bug in YOUR output, never in the pipeline.

## Output schema (STRICT)

Write the YAML file `<symbol>.{platform}.yaml` with EXACTLY these fields:
```yaml
func_name: <SYMBOL_NAME>
func_va: "<hex virtual address>"
func_rva: "<hex rva>"
func_size: "<hex size>"
func_sig: "<byte pattern, ?? wildcards, function head, minimal-unique>"
```
NEVER include vfunc_index, vfunc_offset, vfunc_sig or vtable_name.

## Verification

1. Decompile the candidate and confirm the behavior matches the purpose above (not a caller or callee).
2. Confirm uniqueness: the generated pattern must match exactly one location in the loaded binary.
3. If a candidate cannot be confirmed, report the shortlist instead of guessing - a skipped symbol is
   safer than a wrong signature.

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.

View all in devops →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.