Find RegisterSchemaTypeOverride CEntityHandle logo

Find RegisterSchemaTypeOverride CEntityHandle

Organization
HLND2T
find-RegisterSchemaTypeOverride_CEntityHandle

Locate the CEntityHandle to ehandle schema type registration thunk in CS2 server.dll or libserver.so using IDA Pro MCP, including warm IDBs with undefined functions and stale signatures. Use when the corresponding finder preprocessor fails or this symbol is requested directly.

Overview

PublisherHLND2T
RepositoryCS2_VibeSignatures
Skill namefind-RegisterSchemaTypeOverride_CEntityHandle
Stars
67
Forks
11
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by HLND2T on GitHub. Read the source before you install it.

Installation

Install the Find RegisterSchemaTypeOverride CEntityHandle AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/HLND2T/CS2_VibeSignatures/tree/main/.claude/skills/find-RegisterSchemaTypeOverride_CEntityHandle
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/HLND2T/CS2_VibeSignatures.git /tmp/CS2_VibeSignatures
mkdir -p .claude/skills
cp -r /tmp/CS2_VibeSignatures/.claude/skills/find-RegisterSchemaTypeOverride_CEntityHandle .claude/skills/find-RegisterSchemaTypeOverride_CEntityHandle
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Find RegisterSchemaTypeOverride CEntityHandle in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Find RegisterSchemaTypeOverride CEntityHandle on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Find RegisterSchemaTypeOverride CEntityHandle is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Find RegisterSchemaTypeOverride_CEntityHandle

Find the regular registration thunk that passes the schema type name CEntityHandle and its network alias ehandle to the network messages interface. The virtual registration method it calls is a separate symbol.

Realworld Function References

Read the reference for the active platform before identifying the function:

  • Windows: ida_preprocessor_scripts/references/server/RegisterSchemaTypeOverride_CEntityHandle.windows.yaml
  • Linux: ida_preprocessor_scripts/references/server/RegisterSchemaTypeOverride_CEntityHandle.linux.yaml

These are semantic examples from an older build. Addresses, byte patterns, argument count, CRC constants, registers, and virtual offsets can change. Some builds omit the CRC argument entirely. Do not require the old 0x110 slot.

Session and output contract

Read .claude/skills/generate-signature-for-function/references/mcp-ida-session.md (relative to the repository root). Follow its shared session rules: call idb_list, reuse the assigned server database, and pass its database id to subsequent calls. Open a database only if the target is absent. Never use open_file, switch to another module, or close a session owned by the runner. Save and close with save=True any session you open yourself.

The active input determines the platform. Write exactly one artifact:

InputRequired output
server.dllRegisterSchemaTypeOverride_CEntityHandle.windows.yaml
libserver.soRegisterSchemaTypeOverride_CEntityHandle.linux.yaml

Use CS2VIBE_ARTIFACT_DIR as the output directory when set. Otherwise use the repository's bin_artifacts/<GAMEVER>/server/ directory, inferring GAMEVER from the assigned binary path. Never write symbol YAML into bin/ or cache storage.

Before analysis, parse the expected output if it exists. Skip only when it is a nonempty mapping with the exact func_name, positive func_size, valid func_va/func_rva, and a nonempty unique func_sig matching the current function entry. If validator feedback requests a repair, repair it even if the file exists. An empty, malformed, or stale file is unfinished work.

Locate and verify the thunk

  1. Search for the exact strings CEntityHandle and ehandle. Keep all string occurrences and their raw xrefs, including those outside known functions. idautils.Strings(default_setup=False) preserves the current string list; do not silently reset its configuration. Inspect raw string bytes when the list does not contain the expected literal.
  2. Inspect the instructions around their xrefs. Find the small code sequence that supplies both exact strings to the same virtual call or tail jump, loading the interface receiver from a global pointer and then its vtable. Windows typically passes the receiver in RCX and the type name in RDX; Linux typically uses RDI and RSI. Derive the remaining arguments from the current instructions rather than the old prototype.
  3. Exclude constructors, logging code, reflection metadata, and larger registration setup functions. A neighboring thunk can also pass ehandle but register CHandle; it is not the target. A string substring match or an identical indirect-jump sequence alone is insufficient evidence.
  4. Read the full candidate through its return/tail jump. Verify the receiver, exact type/alias pair, and call arguments before assigning the name. If several candidates remain semantically indistinguishable, stop with a <skill_error> describing the ambiguity; do not guess.

Recover undefined code conservatively

A warm IDB may have decoded instructions and string xrefs without a function. An empty function-xref search therefore does not prove the target is absent.

  • From a raw string xref, walk instruction heads backward within the same executable segment. Inspect incoming code references to the candidate entry. A lea in a static initializer can take the address of the registration thunk without calling it directly.
  • If that initializer is also undefined, inspect .preinit_array, .init_array, or .fini_array. A pointer-sized, aligned, in-bounds entry whose stored value equals the code entry is evidence for defining it. An arbitrary data pointer alone is insufficient.
  • Define only an evidenced entry outside existing functions. Use define_func or ida_funcs.add_func, then verify get_func(raw_xref).start_ea equals that entry and the function covers the complete registration sequence. Never delete, split, or expand unrelated existing functions to force a match.
  • Inspect tool errors and actual boundaries if definition fails. Keep the evidence and report an error if safe recovery cannot be established.

MCP Python scope: py_eval can execute with distinct globals and persistent locals. Use ordinary loops for code that reads newly assigned loop variables; avoid comprehensions or nested helpers capturing such variables. On Python 3.11, get_operand_value(xref.frm, i) inside a comprehension can read an old global xref, even while the outer loop is visiting a different reference. Build a fresh local result on every call; never rely on earlier result values.

Generate and write the artifact

  1. Rename the verified function RegisterSchemaTypeOverride_CEntityHandle.

  2. Use /generate-signature-for-function at the verified entry, and validate that the pattern has exactly one match in the active module at that entry. Similar adjacent thunks can have the same fully wildcarded instruction shape. If so, retain the minimum operand bytes needed to distinguish them, keeping instruction boundaries and rechecking uniqueness. Never copy the signature or address from another version, or extend into unrelated code to manufacture a unique prefix.

  3. Use /write-func-as-yaml with the verified address, exact function name, and validated signature. Ensure it writes to the output directory above. Produce these regular-function fields:

    yaml
    func_name: RegisterSchemaTypeOverride_CEntityHandle
    func_va: '<current entry VA>'
    func_rva: '<entry VA minus current image base>'
    func_size: '<current function size>'
    func_sig: '<validated unique signature>'
  4. Reopen the YAML, verify all five fields against the active database, and recheck its signature. Do not add vfunc_index, vfunc_offset, or a virtual method address: the downstream find-INetworkMessages_RegisterSchemaTypeOverride consumes this thunk separately to determine the virtual slot.

  5. Report the exact artifact path, function address, and the semantic and signature checks performed. Report unrecoverable failures with <skill_error>reason</skill_error> instead of claiming success.

Frequently asked questions

What does the Find RegisterSchemaTypeOverride CEntityHandle AI skill do?

Locate the CEntityHandle to ehandle schema type registration thunk in CS2 server.dll or libserver.so using IDA Pro MCP, including warm IDBs with undefined functions and stale signatures. Use when the corresponding finder preprocessor fails or this symbol is requested directly.

Why use Find RegisterSchemaTypeOverride CEntityHandle on TypingMind?

Because you install it once and use it with any model. Find RegisterSchemaTypeOverride CEntityHandle is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Find RegisterSchemaTypeOverride CEntityHandle in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/HLND2T/CS2_VibeSignatures/tree/main/.claude/skills/find-RegisterSchemaTypeOverride_CEntityHandle. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Find RegisterSchemaTypeOverride CEntityHandle?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Find RegisterSchemaTypeOverride CEntityHandle?

As many as you like. As long as a model supports skills, you can use Find RegisterSchemaTypeOverride CEntityHandle with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Find RegisterSchemaTypeOverride CEntityHandle AI skill free?

Yes. It is published on GitHub by HLND2T under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇