mirror of
https://github.com/rehan-remade/universal-modder.git
synced 2026-11-05 01:37:40 +00:00
[PR #212] [MERGED] kb: Cyberpunk 2077 native modding — address hashes for update-proof hooks, and which source wins #215
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
rehan-remade/universal-modder#215
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/rehan-remade/universal-modder/pull/212
Author: @Selene0623
Created: 10/10/2026
Status: ✅ Merged
Merged: 10/11/2026
Merged by: @rehan-remade
Base:
main← Head:kb/cp2077-agent-skills📝 Commits (4)
25ef56akb: Cyberpunk 2077 native modding — address hashes and which source winsfdc6549kb: cyberpunk 2077 address hashes: review fixes93bab0fMerge remote-tracking branch 'origin/main' into land/pr-2128c4c52akb: regenerate the index📊 Changes
3 files changed (+172 additions, -1 deletions)
View changed files
📝
knowledge/INDEX.md(+2 -1)➕
knowledge/games/cyberpunk-2077/cyberpunk-2077-native-modding-address-hashes.md(+128 -0)📝
knowledge/index.json(+42 -0)📄 Description
Adds
knowledge/games/cyberpunk-2077/cyberpunk-2077-native-modding-address-hashes.md— the first Cyberpunk 2077 note in the base.What it covers. Two things that are hard to pick up from scratch:
bin/x64/cyberpunk2077_addresses.json, 987,479 entries over 606,577 distinct offsets — and how to turn an RVA from a disassembler into the linker-map formsection:rva_from_section_base(0x102428→0001:00101428) to get thehash,secondary hashand symbol name that keep a native hook alive across patches viaRED4ext::UniversalRelocFunc. Missing match ≠ broken conversion; the table is per-build.@wrapMethodsemantics, and the concurrency discipline native callbacks demand.It is verified, and the verification found a bug. Distilling alphanin9/CP2077AgentSkills (MIT), I ran its address-hash script against the retail install here. As published it does not start on Python 3.14:
%CP2077_PATH%in anadd_argument(help=…)string is%-formatted by argparse, so it dies withValueError: unsupported format character 'C' (0x43) at index 65before reading any argument. Escaping it as%%CP2077_PATH%%makes it run, and a real lookup returns0001:00101428→hash=887623293→game::WorldBoundarySystem::Tick. The note records the exact transcript, the error paths (Matches: none, exit 2 for an RVA outside every section), and a section-table cross-check withllvm-readobj.Honesty markers: the symbols' correctness was not verified (that needs disassembly), no plugin was built or injected, and the note flags the stamp gap (table stamped 2025-08-27, exe mtime 2026-08-07). The upstream fix is local, not yet sent to the skill author.
Links: alphanin9/CP2077AgentSkills,
wopss/RED4ext.SDK,psiberx/cp2077-red-lib,adamsmasher/cyberpunk(Codeberg).Gate:
um kb checkPASS on the note ·um kb check --indexPASS 158 notes ·uv run --with pytest pytest -q tests87 passed, 1 skipped ·um publish check .473 files, 0 failures, 2 warnings (both pre-existing, unrelated notes).🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.