source2rosetta/ATTRIBUTIONS.md
Kamal Tufekcic c458b4cb50
All checks were successful
CI / lint (push) Successful in 17s
CI / fuzz (push) Successful in 1m52s
CI / test (push) Successful in 24s
read what the binary says about itself: names, signatures, prototypes; gen v2
2026-07-29 20:09:21 +03:00

215 lines
16 KiB
Markdown

# 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](https://github.com/SteamDatabase/GameTracking-CS2),
[GameTracking-Dota2](https://github.com/SteamDatabase/GameTracking-Dota2),
[GameTracking-Deadlock](https://github.com/SteamDatabase/GameTracking-Deadlock),
[GameTracking-CSGO](https://github.com/SteamDatabase/GameTracking-CSGO),
[GameTracking-TF2](https://github.com/SteamDatabase/GameTracking-TF2),
[GameTracking-HalfLifeAlyx](https://github.com/SteamDatabase/GameTracking-HalfLifeAlyx),
[GameTracking](https://github.com/SteamDatabase/GameTracking),
[Protobufs](https://github.com/SteamDatabase/Protobufs) — all by **SteamDatabase**: per-build tracking of
Valve games and the protobuf definitions.
- **CS2 gamedata & offsets** — [CS2-Gamedata](https://github.com/roflmuffin/CS2-Gamedata) (roflmuffin, a
primary catalogue seed), [cs2-dumper](https://github.com/a2x/cs2-dumper) (a2x),
[s2u-gamedata](https://github.com/Wend4r/s2u-gamedata) / [s2d-schema](https://github.com/Wend4r/s2d-schema)
(Wend4r), [cs2-universal-offsets](https://github.com/scros22/cs2-universal-offsets) (scros22),
[CS2-OFFSETS](https://github.com/sezzyaep/CS2-OFFSETS) (sezzyaep),
[cs2-offsets](https://github.com/superisuer/cs2-offsets) (superisuer),
[IDA-GameDataTracker](https://github.com/K4ryuu/IDA-GameDataTracker) (K4ryuu).
- **CS2 signatures** — [cs2-signatures](https://github.com/ianlucas/cs2-signatures) (ianlucas),
[cs2-signature-list](https://github.com/Salvatore-Als/cs2-signature-list) (Salvatore-Als),
[CS2_VibeSignatures](https://github.com/HLND2T/CS2_VibeSignatures) (HLND2T),
[Aspasia](https://github.com/Aspasia1337/Aspasia) (Aspasia1337),
[cs2_things](https://github.com/GameChaos/cs2_things) (GameChaos),
[cs2-lib](https://github.com/ianlucas/cs2-lib) (ianlucas).
- **CS:GO symbols/dumps** — [csgo-signatures](https://github.com/CrackerCat/csgo-signatures) (CrackerCat),
[csgo-linux-dumper](https://github.com/foxadb/csgo-linux-dumper) (foxadb),
[CSGO-Dumper](https://github.com/Y3t1y3t/CSGO-Dumper) (Y3t1y3t),
[hazedumper](https://github.com/frk1/hazedumper) (frk1).
- **macOS symbol ground-truth** — [dota-2-symbols](https://github.com/a2x/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, from `SH_DECL_HOOK` declarations in open-source
mods, and from [modsharp-public](https://github.com/Kxnrl/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](https://github.com/Source2ZE/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 vendored `sdk/` (alliedmodders/hl2sdk) is quarantined like every other copy, and its
`serversideclient.h` is excluded on provenance — it carries a `@Wend4r` annotation, 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](https://github.com/KZGlobalTeam/cs2kz-metamod) (KZGlobalTeam, AGPL-3.0), whose
detour block covers the movement surface no other source declares, and from
[plugify-plugin-s2sdk](https://github.com/untrustedmodders/plugify-plugin-s2sdk) (untrustedmodders,
GPL-3.0), whose `addresses` table and hook aliases are full function-pointer types and whose
`CALL_VIRTUAL` sites contribute return types. Both are joined by the same two routes. plugify's
`external/` is excluded entirely: two of its submodules are Wend4r forks, one of them the very
sourcesdk tree rejected above, so only its own `src/` is ever read.
- **Dota / Deadlock gamedata** — [McDota](https://github.com/LWSS/McDota) (LWSS),
[dota2dumped](https://github.com/ikhsanprasetyo/dota2dumped) & [Dota2Cheat](https://github.com/ikhsanprasetyo/Dota2Cheat)
(ikhsanprasetyo), [D2VDump](https://github.com/ModDota/D2VDump) (ModDota),
[d2fixups](https://github.com/psychonic/d2fixups) (psychonic),
[Dota2Hack](https://github.com/or75/Dota2Hack) (or75),
[dezlock-dump](https://github.com/dougwithseismic/dezlock-dump) (dougwithseismic),
[Deadlock-GameSDK](https://github.com/aylers/Deadlock-GameSDK) (aylers),
[deadworks](https://github.com/Deadworks-net/deadworks) (Deadworks-net),
[deadunlock](https://github.com/hmate9/deadunlock) (hmate9),
[Deadlock-Offset-Dumper](https://github.com/5k-omar/Deadlock-Offset-Dumper) (5k-omar),
[deadlock-metadata](https://github.com/leamare/deadlock-metadata) (leamare),
[cvar-unhide-s2-citadel](https://github.com/Artemon121/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](https://github.com/sigsegv-mvm/sigsegv-mvm) & [mvm-reversed](https://github.com/sigsegv-mvm/mvm-reversed)
& [libtf2mod](https://github.com/sigsegv-mvm/libtf2mod) (sigsegv-mvm) and the
[rafradek fork](https://github.com/rafradek/sigsegv-mvm),
[tf2-data](https://github.com/powerlord/tf2-data) (powerlord),
[TF2-Base](https://github.com/NicknineTheEagle/TF2-Base) (NicknineTheEagle),
[TF2Items](https://github.com/asherkin/TF2Items) (asherkin),
[tf2attributes](https://github.com/FlaminSarge/tf2attributes) (FlaminSarge),
[SM-TFUtils](https://github.com/nosoop/SM-TFUtils) / [SM-TFEconData](https://github.com/nosoop/SM-TFEconData)
/ [SM-TFAttributeSupport](https://github.com/nosoop/SM-TFAttributeSupport) (nosoop),
[TF2Classic](https://github.com/danielmm8888/TF2Classic) (danielmm8888),
[Left4DHooks](https://github.com/SilvDev/Left4DHooks) & [Various_Scripts_Collection](https://github.com/SilvDev/Various_Scripts_Collection)
(SilvDev), [L4D1-2_Signatures](https://github.com/Psykotikism/L4D1-2_Signatures) (Psykotikism),
[l4d2_structs](https://github.com/ProdigySim/l4d2_structs) (ProdigySim),
[l4d2_direct](https://github.com/ConfoglTeam/l4d2_direct) (ConfoglTeam),
[Left4Downtown2](https://github.com/Attano/Left4Downtown2) & [L4D2-Competitive-Framework](https://github.com/Attano/L4D2-Competitive-Framework)
(Attano), [L4D1_2-Plugins](https://github.com/fbef0102/L4D1_2-Plugins) (fbef0102),
[L4D2-Competitive-Rework](https://github.com/SirPlease/L4D2-Competitive-Rework) (SirPlease),
[l4dtoolz](https://github.com/lakwsh/l4dtoolz) (lakwsh),
[atomicstrykers-codedump](https://github.com/AtomicStryker/atomicstrykers-codedump) (AtomicStryker),
[insurgency-sourcemod](https://github.com/jaredballou/insurgency-sourcemod) (jaredballou),
[Insurgency-dy-sourcemod](https://github.com/thecannons/Insurgency-dy-sourcemod) (thecannons),
[ReGameDLL_CS](https://github.com/rehlds/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](https://github.com/oxiKKK/source2gen) (oxiKKK, the surviving fork of
neverlosecc/source2gen), [Source2Gen](https://github.com/praydog/Source2Gen) (praydog),
[cs2-sdk](https://github.com/NotOfficer/cs2-sdk) (NotOfficer),
[cs2-sdk](https://github.com/bruhmoment21/cs2-sdk) (bruhmoment21).
- **Schema / RTTI dumpers** — [Source2SchemaDumper](https://github.com/GAMMACASE/Source2SchemaDumper) &
[PltPatcher](https://github.com/GAMMACASE/PltPatcher) (GAMMACASE),
[CS2-SchemaDumper](https://github.com/sneakyevil/CS2-SchemaDumper) (sneakyevil),
[Source2-Schema-System-Dumper-CE](https://github.com/dr-NHA/Source2-Schema-System-Dumper-CE) (dr-NHA),
[Source2Dumps](https://github.com/anarh1st47/Source2Dumps) (anarh1st47),
[source2-dumper](https://github.com/eliasmoflag/source2-dumper) (eliasmoflag),
[DumpSource2](https://github.com/ValveResourceFormat/DumpSource2) &
[ValveResourceFormat](https://github.com/ValveResourceFormat/ValveResourceFormat) (the VRF team).
- **Binary analysis / demo parsing** — [cs2-analyzer](https://github.com/a2x/cs2-analyzer) (a2x),
[source2-demo](https://github.com/Rupas1k/source2-demo) (Rupas1k),
[demofile-net](https://github.com/saul/demofile-net) (saul).
## Engine SDKs, headers & networking
- [hl2sdk](https://github.com/alliedmodders/hl2sdk) & [hl2sdk-manifests](https://github.com/alliedmodders/hl2sdk-manifests)
(AlliedModders) — the Source engine SDK and its per-game manifests.
- [source-sdk-2013](https://github.com/ValveSoftware/source-sdk-2013) &
[GameNetworkingSockets](https://github.com/ValveSoftware/GameNetworkingSockets) (Valve).
- [sourcesdk](https://github.com/Wend4r/sourcesdk) (Wend4r),
[sourcesdk-gmod](https://github.com/RaphaelIT7/sourcesdk-gmod) (RaphaelIT7),
[sbox-public](https://github.com/Facepunch/sbox-public) (Facepunch) — Source-2 headers via s&box.
- [Half-Life-Alyx-FGD](https://github.com/gvarados1/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](https://github.com/roflmuffin/CounterStrikeSharp) (roflmuffin) — the C# CS2 framework
and the gamedata format the default output targets.
- [metamod-source](https://github.com/alliedmodders/metamod-source) & [sourcemod](https://github.com/alliedmodders/sourcemod)
(AlliedModders) — the Source mod loader + framework lineage (gamedata format, SourceHook).
- The **swiftly-solution** ecosystem — [swiftly](https://github.com/swiftly-solution/swiftly) &
[swiftlys2](https://github.com/swiftly-solution/swiftlys2),
[s2binlib](https://github.com/swiftly-solution/s2binlib),
[gamedata-validator](https://github.com/swiftly-solution/gamedata-validator),
[codegen](https://github.com/swiftly-solution/codegen) — Source-2 binary/gamedata handling and validation.
- [modsharp-public](https://github.com/Kxnrl/modsharp-public) (Kxnrl),
[source2toolkit](https://github.com/SlynxCZ/source2toolkit) (SlynxCZ),
[plugify-plugin-s2sdk](https://github.com/untrustedmodders/plugify-plugin-s2sdk) (untrustedmodders),
[Source.Python](https://github.com/Source-Python-Dev-Team/Source.Python) (Source.Python team).
- CS2 server projects — [CS2Fixes](https://github.com/Source2ZE/CS2Fixes),
[StripperCS2](https://github.com/Source2ZE/StripperCS2),
[MultiAddonManager](https://github.com/Source2ZE/MultiAddonManager) (Source2ZE),
[cs2kz-metamod](https://github.com/KZGlobalTeam/cs2kz-metamod) (KZGlobalTeam),
[SourceCoop](https://github.com/ampreeT/SourceCoop) (ampreeT),
[cs2-modded-server](https://github.com/kus/cs2-modded-server) (kus),
[gmod-holylib](https://github.com/RaphaelIT7/gmod-holylib) (RaphaelIT7),
[Osiris](https://github.com/danielkrupinski/Osiris) (danielkrupinski),
[SourceAutoRecord](https://github.com/p2sr/SourceAutoRecord) & [wormhole](https://github.com/p2sr/wormhole) (p2sr).
- Host-capability references — [Ray-Trace](https://github.com/FUNPLAY-pro-CS2/Ray-Trace) (FUNPLAY-pro-CS2),
[ResourcePrecacher](https://github.com/KillStr3aK/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](https://github.com/mahmoudimus/ida-sigmaker) (mahmoudimus),
[sigmakerex](https://github.com/kweatherman/sigmakerex) (kweatherman).
- Binary diffing — [diaphora](https://github.com/joxeankoret/diaphora) (Joxean Koret).
- Vtable / symbol walking — [vtable](https://github.com/asherkin/vtable) (asherkin),
[ghidra_scripts](https://github.com/nosoop/ghidra_scripts) (nosoop),
[IDA-Scripts](https://github.com/Scags/IDA-Scripts) (Scags),
[ida-cs2-reversing-tools](https://github.com/oxiKKK/ida-cs2-reversing-tools) (oxiKKK).
- References & indexes — [SourceEngineReverseEngineering](https://github.com/ReservedRegister/SourceEngineReverseEngineering)
(ReservedRegister), [reverse-engineering-resources](https://github.com/srcdslab/reverse-engineering-resources)
(srcdslab), [awesome-cs2](https://github.com/samyycX/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](https://github.com/Cisco-Talos/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.*