SalastilandClaude Opus 5.5 1387ed92fb Decompile reaper and gameoverlayui stubs; pin Proton sources for reference
reaper (the game process subreaper) and the gameoverlayui launchers were
missed by the original >8 KB inventory. Proton 9.0-4f and Experimental
11.0-20261001 are pinned for how Steam launches Windows games and for
lsteamclient's Steamworks headers (88 SDK versions).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 16:24:29 -04:00

steam (Rust rewrite) — reverse-engineering workspace

Goal: a Linux-only, slimmed-down Steam client (Rust backend, Qt UI) covering only the Library: login, install/update/download, in-game presence, Steam Chat, and the steamclient.so ABI that games (native and Proton via lsteamclient) load. No Store, Community, Market, or embedded-browser features.

Layout

  • client/ snapshot of the official client binaries being studied (gitignored)
  • decomp/ generated output (tracked; logs ignored)
    • <dir>_<binary>/src/<Namespace>.c, functions.tsv, strings.tsv — Ghidra pseudo-C
    • protos/ — .proto files extracted from steamclient.so; descriptors.pb is a FileDescriptorSet usable directly with prost_build::Config::compile_fds
    • steamui/ — prettified Library UI JS; steamclient_js_api.txt lists the SteamClient.* backend API the UI calls
    • runtime/ — Steam runtime binaries: PROVENANCE.tsv matches every one by SHA-256 to its published .deb; DUPLICATES.tsv maps identical copies. Only the proprietary NVIDIA Cg toolkit binaries are decompiled here.
  • SOURCES.tsv — the original source code for every open-source binary, pinned to the exact version (Debian/Valve .dsc, or upstream git tag/commit) with evidence
  • BINARY_SOURCES.tsv — which source each binary comes from, and how that was established
  • sources/ — that source code, fetched by tools/sources.py fetch (gitignored, ~20 GB)

Rule: a binary whose exact source version is public is read from sources/, not decompiled. Decompiled output is kept only for code with no public source (Steam's own binaries, RAD Miles, NVIDIA Cg, Valve's WebRTC fork, ...) and for libraries whose version could only be inferred (dav1d, ANGLE, SwiftShader — see BINARY_SOURCES.tsv).

Tools

  • tools/decompile.sh <bin>... — headless Ghidra analysis + pseudo-C export (decompile_list.sh, decompile_batch.sh for queues/batches; limits in ghidra-env.sh)
  • tools/extract_protos.py <bin>... <out> — protobuf descriptor extraction
  • tools/verify_runtime.py — match runtime binaries to published packages
  • tools/sources.py resolve / fetch [--only ID] [--chromium] — pin and download sources

Re-run everything after a client update by re-copying binaries into client/.

S
Description
No description provided
Readme
775 MiB
0 Stars 0 Watchers 0 Forks
Languages
C 98.9%
JavaScript 1.1%