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 CNetworkGameServerBase GetChallengeType

ASecurity

Agent 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 exampl...

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

Works with

cliapimcp

Security Analysis

A100/100

Scanned 9/27/2026

Install to Claude Code

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

Installs into .claude/skills of the current project.

Are you the author of Find CNetworkGameServerBase GetChallengeType?

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

Security grade badge for Find CNetworkGameServerBase GetChallengeType
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mrc4tt-find-cnetworkgameserverbase-getchallengetype/badge)](https://www.skillsdirectory.com/skills/mrc4tt-find-cnetworkgameserverbase-getchallengetype)

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

Download with Pro
Files
SKILL.md
---
name: find-CNetworkGameServerBase_GetChallengeType
description: |
  Agent 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
disable-model-invocation: true
---

# Find CNetworkGameServerBase_GetChallengeType (Agent fallback)

Locate the `CNetworkGameServerBase_GetChallengeType` virtual function in CS2 `engine2.dll` / `libengine2.so`
using IDA Pro MCP tools. This is the **Agent fallback** for the `find-CNetworkGameServerBase_GetChallengeType`
preprocessor: it runs only when the preprocessor script returned failure. It reproduces the LLM_DECOMPILE step
by hand — collecting the virtual-call reference to `GetChallengeType` inside its caller
`CNetworkGameServerBase_ReplyChallenge`.

The output is a **virtual dispatch** (`found_vcall`): the YAML records the vtable slot and a `vfunc_sig` that
pins the call instruction. There is **no concrete implementation address** — do not resolve or emit `func_va`.

## Realworld Function Reference

Read the platform-relevant reference YAML before searching in IDA. It provides concrete disassembly,
decompiler output, and the annotated call site. Treat its addresses and offsets as reference-build values only;
verify every result against the current binary.

- Windows: `ida_preprocessor_scripts/references/engine/CNetworkGameServerBase_ReplyChallenge.windows.yaml`
- Linux: `ida_preprocessor_scripts/references/engine/CNetworkGameServerBase_ReplyChallenge.linux.yaml`

## Background — where GetChallengeType is called

`CNetworkGameServerBase_ReplyChallenge(this, netadr, a3)` builds an `S2C_CHALLENGE` reply. Very early — right
after it initializes a bitbuf on the stack (a call of the form `sub_XXXX(&buf, storage, 512, 0xFFFFFFFF)`) — it
makes a virtual call **on the server object itself** to obtain the challenge / authentication type:

```c
// Linux reference (offset 0x2B0)
v5 = (*(__int64 (__fastcall **)(__int64, _DWORD *))(*(_QWORD *)a1 + 688LL))(a1, a2);
// Windows reference (offset 0x288)
v6 = (*(__int64 (__fastcall **)(__int64, netadr_t *))(*(_QWORD *)a1 + 648LL))(a1, a2);
```

The returned value is the **auth/challenge type**. It is written into the bitbuf and later logged as the
`%u auth %d` field of `"Sending S2C_CHALLENGE [%u auth %d] to %s\n"`, and it drives the `if (type != 3)` /
`if (type == 3)` branch. That semantic role is the anchor — not the raw offset, which changes across updates.

## Step 0. Skip if already produced

If `CNetworkGameServerBase_GetChallengeType.<platform>.yaml` already exists next to the binary and parses to a
non-empty mapping, **skip** — nothing to do. `/get-func-from-yaml` also reports existence.

## Step 1. Load and decompile the caller

**ALWAYS** Use SKILL `/get-func-from-yaml` with `func_name=CNetworkGameServerBase_ReplyChallenge` to obtain its
`func_va`.

If the skill returns an error, **STOP** and report to user (this fallback cannot run without the predecessor).

Decompile it:

```
mcp__ida-pro-mcp__decompile addr="<CNetworkGameServerBase_ReplyChallenge.func_va>"
```

Confirm the `this` register (first argument — `rcx` on Windows, `rdi` on Linux).

## Step 2. Locate the GetChallengeType vcall

Find the **first virtual call dispatched on `this`** in `ReplyChallenge`:

```asm
mov     rax, [this]            ; load the object's vtable
...
call    qword ptr [rax+OFF]    ; OFF = vfunc_offset  (ref: 0x2B0 Linux / 0x288 Windows)
```

Confirm the semantic fingerprint:

1. It is the vcall on the **server object** (`this`), not on a client / netchan pointer.
2. It appears right after the bitbuf-init call `sub_XXXX(&buf, storage, 512, 0xFFFFFFFF)`.
3. Its return value flows into the `"Sending S2C_CHALLENGE [%u auth %d] to %s\n"` log (the `%d`/`%u` auth field)
   and gates the `!= 3` branch.

Then:

- `vfunc_offset = OFF` (the displacement in the `call qword ptr [rax+OFF]` instruction)
- `vfunc_index = vfunc_offset / 8`  (ref: `86` Linux `0x2B0`, `81` Windows `0x288`)

## Step 3. Generate the vfunc signature

**ALWAYS** Use SKILL `/generate-signature-for-vfuncoffset` on the `call qword ptr [rax+OFF]` instruction to
obtain `vfunc_sig` (the offset bytes are fixed in the signature; `vfunc_sig_disp` is `0`).

## Step 4. Write the YAML

**ALWAYS** Use SKILL `/write-vfunc-as-yaml` with:

- `func_name`: `CNetworkGameServerBase_GetChallengeType`
- `vtable_name`: `CNetworkGameServerBase`
- `vfunc_offset`: the resolved offset (hex, e.g. `0x2B0` / `0x288`)
- `vfunc_index`: `vfunc_offset / 8`
- `vfunc_sig`: from Step 3
- `func_addr`: `None`   (no concrete implementation address for a virtual dispatch)
- `func_sig`: `None`

## Failure handling

- If the predecessor `CNetworkGameServerBase_ReplyChallenge` YAML is missing → **STOP** and report to user.
- If the vcall cannot be located → **STOP** and report exactly what could not be found, so the user can extend
  the reference.

## Output YAML filenames

- Windows (`engine2.dll`): `CNetworkGameServerBase_GetChallengeType.windows.yaml`
- Linux (`libengine2.so`): `CNetworkGameServerBase_GetChallengeType.linux.yaml`

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

Solution Architect

Designs system architecture, component specifications, and technical integration strategy. Use when: designing solutions, system architecture, technology stack, or integration approaches.

192 votes

Akorchak:Venture Assessment

Generate a comprehensive VC investment assessment report for a company

72 votes

Stock Analysis

Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management (create, add, remove assets), crypto analysis (Top 20 by market cap), and periodic performance reports (daily/weekly/monthly/quarterly/yearly). 8 analysis dimensions for stocks, 3 for crypto. Use for stock analysis, portfolio tracking, earnings reactions, or crypto monitoring.

6511 votes

Just Fucking Cancel

Find and cancel unwanted subscriptions by analyzing bank transactions. Detects recurring charges, calculates annual waste, and helps you cancel with direct URLs and browser automation. Use when: 'cancel subscriptions', 'audit subscriptions', 'find recurring charges', 'what am I paying for', 'save money', 'subscription cleanup', 'stop wasting money'. Supports CSV import (Apple Card, Chase, Amex, Citi, Bank of America, Capital One, Mint, Copilot) OR Plaid API for automatic transaction pull. Out...

6511 votes

Telegram Compose

Compose rich, readable Telegram messages using HTML formatting via direct Telegram API. Use when: (1) Sending any Telegram message beyond a simple one-line reply, (2) Creating structured messages with sections, lists, or status updates, (3) Need formatting unavailable via Clawdbot's Markdown conversion (underline, spoilers, expandable blockquotes, user mentions by ID), (4) Sending alerts, reports, summaries, or notifications to Telegram, (5) Want professional, scannable message formatting wit...

6511 votes
View all in business →