16 KiB
Attributions
source2rosetta derives Source-2 gamedata — function signatures, vtable offsets, and the schema/RTTI surface — from stripped Valve libraries. It could not exist without the decade of reverse-engineering, tooling, and open documentation produced by the Counter-Strike / Source / Source-2 community. Much of the engine came in name-stripped; the names — the catalogues, symbol dictionaries, gamedata files, and SDK dumps that let the derived offsets and signatures be labelled meaningfully — came from the projects below. The initial seeds were foundational: they are why this tool has anything to say.
This document credits that prior work. Where a project supplied a specific ingredient (a catalogue, a symbol set, a technique, a format), the role is noted.
Provenance
source2rosetta and everything it ships are derived only from legitimately-public sources: open-source SDKs, Valve's own tracked game builds, community gamedata files, and published research. Leaked or otherwise proprietary game source was deliberately excluded from the corpus and the naming pipeline — a clean-room boundary kept so the tool and its outputs carry no tainted provenance. The derived facts themselves (fingerprints, offsets, signatures) contain no third-party bytes.
Game-data, symbol & offset reference corpora
The catalogues and dictionaries that give the derived offsets/signatures their names — the "seeds".
- Valve build tracking — GameTracking-CS2, GameTracking-Dota2, GameTracking-Deadlock, GameTracking-CSGO, GameTracking-TF2, GameTracking-HalfLifeAlyx, GameTracking, Protobufs — all by SteamDatabase: per-build tracking of Valve games and the protobuf definitions.
- CS2 gamedata & offsets — CS2-Gamedata (roflmuffin, a primary catalogue seed), cs2-dumper (a2x), s2u-gamedata / s2d-schema (Wend4r), cs2-universal-offsets (scros22), CS2-OFFSETS (sezzyaep), cs2-offsets (superisuer), IDA-GameDataTracker (K4ryuu).
- CS2 signatures — cs2-signatures (ianlucas), cs2-signature-list (Salvatore-Als), CS2_VibeSignatures (HLND2T), Aspasia (Aspasia1337), cs2_things (GameChaos), cs2-lib (ianlucas).
- CS:GO symbols/dumps — csgo-signatures (CrackerCat), csgo-linux-dumper (foxadb), CSGO-Dumper (Y3t1y3t), hazedumper (frk1).
- macOS symbol ground-truth — dota-2-symbols (a2x): symbolicated Dota builds that anchor cross-game name transfer.
- Declared prototypes (
mappings/prototypes.json) — the parameter and return types committed with this repository are harvested from the macOS symbols above, fromSH_DECL_HOOKdeclarations in open-source mods, and from modsharp-public (Kxnrl, AGPL-3.0-or-later), whose gamedata-keyed function-pointer typedefs are the source of most of the declared RETURN types. Only files ModSharp itself authored are mined; the ten marked "modified from alliedmodders/hl2sdk/tree/cs2" are denylisted. Also from CS2Fixes (Source2ZE, GPL-3.0), whose detour block declares each hooked engine function as a real function-pointer type; those are joined to our names by BYTE PATTERN or by a label that already is one of our names, never by a bare method name. Its vendoredsdk/(alliedmodders/hl2sdk) is quarantined like every other copy, and itsserversideclient.his excluded on provenance — it carries a@Wend4rannotation, i.e. it descends from a fork this project rejected, and every copy of that header across the ecosystem shares the lineage. Also from cs2kz-metamod (KZGlobalTeam, AGPL-3.0), whose detour block covers the movement surface no other source declares, and from plugify-plugin-s2sdk (untrustedmodders, GPL-3.0), whoseaddressestable and hook aliases are full function-pointer types and whoseCALL_VIRTUALsites contribute return types. Both are joined by the same two routes. plugify'sexternal/is excluded entirely: two of its submodules are Wend4r forks, one of them the very sourcesdk tree rejected above, so only its ownsrc/is ever read. - Dota / Deadlock gamedata — McDota (LWSS), dota2dumped & Dota2Cheat (ikhsanprasetyo), D2VDump (ModDota), d2fixups (psychonic), Dota2Hack (or75), dezlock-dump (dougwithseismic), Deadlock-GameSDK (aylers), deadworks (Deadworks-net), deadunlock (hmate9), Deadlock-Offset-Dumper (5k-omar), deadlock-metadata (leamare), cvar-unhide-s2-citadel (Artemon121).
- Cross-game symbol/name dictionaries (TF2 / L4D / Insurgency / GoldSrc — the harvest that lets names transfer across the shared Source lineage) — sigsegv-mvm & mvm-reversed & libtf2mod (sigsegv-mvm) and the rafradek fork, tf2-data (powerlord), TF2-Base (NicknineTheEagle), TF2Items (asherkin), tf2attributes (FlaminSarge), SM-TFUtils / SM-TFEconData / SM-TFAttributeSupport (nosoop), TF2Classic (danielmm8888), Left4DHooks & Various_Scripts_Collection (SilvDev), L4D1-2_Signatures (Psykotikism), l4d2_structs (ProdigySim), l4d2_direct (ConfoglTeam), Left4Downtown2 & L4D2-Competitive-Framework (Attano), L4D1_2-Plugins (fbef0102), L4D2-Competitive-Rework (SirPlease), l4dtoolz (lakwsh), atomicstrykers-codedump (AtomicStryker), insurgency-sourcemod (jaredballou), Insurgency-dy-sourcemod (thecannons), ReGameDLL_CS (ReHLDS).
Schema / RTTI extraction & SDK generation
The projects that first mapped Source-2's schema system and RTTI, and generated typed SDKs from it.
- SDK generators — source2gen (oxiKKK, the surviving fork of neverlosecc/source2gen), Source2Gen (praydog), cs2-sdk (NotOfficer), cs2-sdk (bruhmoment21).
- Schema / RTTI dumpers — Source2SchemaDumper & PltPatcher (GAMMACASE), CS2-SchemaDumper (sneakyevil), Source2-Schema-System-Dumper-CE (dr-NHA), Source2Dumps (anarh1st47), source2-dumper (eliasmoflag), DumpSource2 & ValveResourceFormat (the VRF team).
- Binary analysis / demo parsing — cs2-analyzer (a2x), source2-demo (Rupas1k), demofile-net (saul).
Engine SDKs, headers & networking
- hl2sdk & hl2sdk-manifests (AlliedModders) — the Source engine SDK and its per-game manifests.
- source-sdk-2013 & GameNetworkingSockets (Valve).
- sourcesdk (Wend4r), sourcesdk-gmod (RaphaelIT7), sbox-public (Facepunch) — Source-2 headers via s&box.
- Half-Life-Alyx-FGD (gvarados1) — Source-2 entity/FGD definitions.
Source-engine mod frameworks & runtime references
These defined the gamedata/format conventions source2rosetta emits into, the live-validation model, and the hooking/loader designs the companion loader work draws on.
- CounterStrikeSharp (roflmuffin) — the C# CS2 framework and the gamedata format the default output targets.
- metamod-source & sourcemod (AlliedModders) — the Source mod loader + framework lineage (gamedata format, SourceHook).
- The swiftly-solution ecosystem — swiftly & swiftlys2, s2binlib, gamedata-validator, codegen — Source-2 binary/gamedata handling and validation.
- modsharp-public (Kxnrl), source2toolkit (SlynxCZ), plugify-plugin-s2sdk (untrustedmodders), Source.Python (Source.Python team).
- CS2 server projects — CS2Fixes, StripperCS2, MultiAddonManager (Source2ZE), cs2kz-metamod (KZGlobalTeam), SourceCoop (ampreeT), cs2-modded-server (kus), gmod-holylib (RaphaelIT7), Osiris (danielkrupinski), SourceAutoRecord & wormhole (p2sr).
- Host-capability references — Ray-Trace (FUNPLAY-pro-CS2), ResourcePrecacher (KillStr3aK).
Reverse-engineering tooling & techniques
The signature-making, diffing, and vtable-walking techniques source2rosetta's own passes are modelled on.
- Signature generation — ida-sigmaker (mahmoudimus), sigmakerex (kweatherman).
- Binary diffing — diaphora (Joxean Koret).
- Vtable / symbol walking — vtable (asherkin), ghidra_scripts (nosoop), IDA-Scripts (Scags), ida-cs2-reversing-tools (oxiKKK).
- References & indexes — SourceEngineReverseEngineering (ReservedRegister), reverse-engineering-resources (srcdslab), awesome-cs2 (samyycX).
Binary function similarity research
source2rosetta identifies functions across builds by fingerprinting and nearest-history matching. That design draws on the binary-code-similarity literature.
- Andrea Marcelli et al., "How Machine Learning Is Solving the Binary Function Similarity Problem", USENIX Security 2022 (Cisco Systems), and the accompanying dataset/code binary_function_similarity (Cisco-Talos).
- Steven H. H. Ding, Benjamin C. M. Fung, Philippe Charland, "Asm2Vec: Boosting Static Representation Robustness for Binary Clone Search", IEEE S&P 2019.
- Xiaojun Xu et al., "Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity
Detection" (Gemini), CCS 2017 — via the "Genimi" re-implementation bundled under
refs/papers/Gemini. - Alexander Hermans, Lucas Beyer, Bastian Leibe, "In Defense of the Triplet Loss for Person Re-Identification", 2017 — the metric-learning framing that was pressure-tested for the fingerprint match.
- Also consulted for failure-detection framing: "SAFE: Multitask Failure Detection for Vision-Language-Action Models" (arXiv:2506.09937).
Knowledge from model training
The AI-assisted name-extrapolation pass — proposing names for functions no catalogue covers — relied on the general knowledge of the assisting model (Anthropic's Claude) about Source-2 / CS2 engine conventions, the Itanium C++ ABI, ELF, and Valve's naming patterns. That knowledge is itself distilled from publicly-available open-source code and documentation — in large part the very community projects credited above. Proposed names are always cross-checked against the derived RTTI/offsets, never trusted blind.
If your work is used here and is miscredited or missing, that is an oversight, not intent — corrections are welcome. This tool is a small addition on top of a large community's effort.