# Find CNetworkMessages AllowAdditionalMessageRegistration AND CNetworkMessages IsAdditionalMessageRegistrationAllowed

> |

- **Type:** Skill
- **Install:** `agentstack add skill-hlnd2t-cs2-vibesignatures-find-cnetworkmessages-allowadditionalmessageregistration-and-cnetworkmessages-isadditionalmessageregistrationallowed`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [HLND2T](https://agentstack.voostack.com/s/hlnd2t)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [HLND2T](https://github.com/HLND2T)
- **Source:** https://github.com/HLND2T/CS2_VibeSignatures/tree/main/.claude/skills/find-CNetworkMessages_AllowAdditionalMessageRegistration-AND-CNetworkMessages_IsAdditionalMessageRegistrationAllowed

## Install

```sh
agentstack add skill-hlnd2t-cs2-vibesignatures-find-cnetworkmessages-allowadditionalmessageregistration-and-cnetworkmessages-isadditionalmessageregistrationallowed
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Find CNetworkMessages_AllowAdditionalMessageRegistration and CNetworkMessages_IsAdditionalMessageRegistrationAllowed

Locate `CNetworkMessages_AllowAdditionalMessageRegistration` and `CNetworkMessages_IsAdditionalMessageRegistrationAllowed` vfuncs in CS2 `networksystem.dll` or `libnetworksystem.so` using IDA Pro MCP tools.

## Method

### 1. Load CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal from YAML

**ALWAYS** Use SKILL `/get-func-from-yaml` with `func_name=CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal`.

If the skill returns an error, **STOP** and report to user.

Otherwise, extract:
- `vfunc_index` of `CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal`
- `vfunc_offset` of `CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal`

### 2. Load CNetworkMessages VTable from YAML

**ALWAYS** Use SKILL `/get-vtable-from-yaml` with `class_name=CNetworkMessages`.

If the skill returns an error, **STOP** and report to user.

Otherwise, extract:
- `vtable_numvfunc`
- `vtable_entries`

### 3. Resolve the Two Adjacent Slots

Compute the candidate slots:

- `allow_vfunc_index = CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal.vfunc_index + 1`
- `allow_vfunc_offset = CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal.vfunc_offset + 8`
- `isallowed_vfunc_index = CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal.vfunc_index + 2`
- `isallowed_vfunc_offset = CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal.vfunc_offset + 16`

Validate that `isallowed_vfunc_index "
mcp__ida-pro-mcp__decompile addr=""
```

Confirm `allow_func_addr` is the simple byte setter pattern:

```c
void __fastcall sub_18009B330(__int64 a1, char a2)
{
  *(_BYTE *)(a1 + 1372) = a2;
}
```

Windows assembly example:

```asm
mov     [rcx+55Ch], dl
retn
```

Then confirm `isallowed_func_addr` is the matching byte getter using the **same member offset**:

```c
__int64 __fastcall sub_18009B340(__int64 a1)
{
  return *(unsigned __int8 *)(a1 + 1372);
}
```

Windows assembly example:

```asm
movzx   eax, byte ptr [rcx+55Ch]
retn
```

The exact member offset may change across game updates. The identification rule is:

1. `allow_func_addr` writes one byte to `this + ` (setter pattern)
2. `isallowed_func_addr` is the next vtable entry (`allow_vfunc_index + 1`)
3. The candidate reads and returns one unsigned byte from the **same** `this + `

If both conditions hold, the candidates are `CNetworkMessages_AllowAdditionalMessageRegistration` and `CNetworkMessages_IsAdditionalMessageRegistrationAllowed`.

### 5. Generate Function Signatures

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

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

Use the returned validated `func_sig` values in the next steps.

### 6. Write IDA Analysis Output as YAML for AllowAdditionalMessageRegistration

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

Required parameters:
- `func_name`: `CNetworkMessages_AllowAdditionalMessageRegistration`
- `func_addr`: ``
- `func_sig`: The validated signature from step 5
- `vfunc_sig`: `None`

VTable parameters:
- `vtable_name`: `CNetworkMessages`
- `vfunc_offset`: `` in hex
- `vfunc_index`: ``

### 7. Write IDA Analysis Output as YAML for IsAdditionalMessageRegistrationAllowed

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

Required parameters:
- `func_name`: `CNetworkMessages_IsAdditionalMessageRegistrationAllowed`
- `func_addr`: ``
- `func_sig`: The validated signature from step 5
- `vfunc_sig`: `None`

VTable parameters:
- `vtable_name`: `CNetworkMessages`
- `vfunc_offset`: `` in hex
- `vfunc_index`: ``

## Function Characteristics

### CNetworkMessages_AllowAdditionalMessageRegistration

- **Purpose**: Sets whether additional network message registration is allowed on the `CNetworkMessages` instance
- **Binary**: `networksystem.dll` / `libnetworksystem.so`
- **Parameters**: `(this, bool bAllow)`
- **Return value**: `void`

### CNetworkMessages_IsAdditionalMessageRegistrationAllowed

- **Purpose**: Returns whether additional network message registration is currently allowed
- **Binary**: `networksystem.dll` / `libnetworksystem.so`
- **Parameters**: `(this)` only
- **Return value**: An unsigned byte / boolean flag loaded from the same member written by `CNetworkMessages_AllowAdditionalMessageRegistration`

## Discovery Strategy

1. Reuse the existing `CNetworkMessages_RegisterNetworkFieldChangeCallbackInternal` YAML to obtain the authoritative slot index
2. Reuse the existing `CNetworkMessages_vtable` YAML to resolve the two adjacent vtable entries
3. Confirm the semantic pair:
   - setter writes `this + `
   - adjacent getter returns `this + `
4. Generate stable `func_sig` values from the resolved function bodies

This is robust because:
- The vtable adjacency (`RegisterNetworkFieldChangeCallbackInternal` followed by `AllowAdditionalMessageRegistration` then `IsAdditionalMessageRegistrationAllowed`) is stable and explicit
- The setter/getter pair must touch the same byte member
- The final YAMLs store both the resolved function signatures and the precise vtable metadata

## Output YAML Format

The output YAML filenames depend on the platform:
- `networksystem.dll` -> `CNetworkMessages_AllowAdditionalMessageRegistration.windows.yaml`, `CNetworkMessages_IsAdditionalMessageRegistrationAllowed.windows.yaml`
- `libnetworksystem.so` -> `CNetworkMessages_AllowAdditionalMessageRegistration.linux.yaml`, `CNetworkMessages_IsAdditionalMessageRegistrationAllowed.linux.yaml`

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [HLND2T](https://github.com/HLND2T)
- **Source:** [HLND2T/CS2_VibeSignatures](https://github.com/HLND2T/CS2_VibeSignatures)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-hlnd2t-cs2-vibesignatures-find-cnetworkmessages-allowadditionalmessageregistration-and-cnetworkmessages-isadditionalmessageregistrationallowed
- Seller: https://agentstack.voostack.com/s/hlnd2t
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
