Das JavaScript, das ancaria in Sacred Gold einschleust, für alle, die dem Loader Hooks oder Events hinzufügen.
Frida führt den Agent im Prozess des Spiels aus. Er hängt sich in die Funktionen des Spiels, meldet das Geschehen als Events, fragt Mods, ob eine Aktion erlaubt ist, und führt ihre Befehle aus. Der Rust-Host aus protocol trägt diese Nachrichten zwischen dem Spiel und der JVM der Mods hin und her.
Jede Adresse kommt aus mappings und
gilt für pureHD.exe 2.0.2.118. Ein Release backt die Adressen ein und liefert
den Agent verkleinert als agent.zip aus. Der Launcher lädt ihn herunter, zum
Spielen installierst du also nichts von Hand.
| Pfad | Was es ist |
|---|---|
src/NN-name.js |
Die Module. Sie teilen einen Gültigkeitsbereich und laden in der Reihenfolge ihrer Dateinamen. |
src/gen/addr.js |
Die Adresstabelle. tools/addr.py erzeugt sie, sie wird nie committet. |
signatures.json |
Die Befehlsbytes an jeder Hook-Stelle, geschrieben von tools/hooksafe.py --signatures. |
tools/compact.mjs |
Der Minifier: Er entfernt Kommentare und Einrückung und ändert sonst nichts. |
tools/pack.mjs |
Baut dist/agent/ und dist/agent.zip. |
tests/ |
Der Build-Check, die Tests des Minifiers und eine Injektion über frida-python. |
Das Archiv ist flach und schon verkleinert:
addr.js die Adresstabelle
NN-name.js jedes Modul
hooks.json die Hook-Stellen je Modul, der Launcher zeigt sie als Schalter
agent.json {"version":"<Version>","protocol":1}
Der Host lehnt einen Agent ab, dessen protocol nicht zu seiner eigenen Nummer
passt. So lädt ein alter Host keinen Agent, der andere Nachrichten spricht.
Du brauchst Python 3.11 und Node 24. tools/hooksafe.py braucht außerdem
pefile und capstone. Mehr installierst du nicht.
python tools/addr.py schreibt src/gen/addr.js
python tools/hooksafe.py lehnt Stellen ab, die ein Trampolin beschädigt
node tests/buildcheck.js prüft die Build-Warnung an einem falschen Spiel
node --test "tests/*.test.mjs" testet den Minifier und das Lesen der Hooks
node tools/pack.mjs schreibt dist/agent.zip
addr.py sucht mappings.json in dieser Reihenfolge: ein Pfad als Argument,
$AGENT_MAPPINGS, das benachbarte ../mappings, dann GitHub in der Revision
aus .mappings-ref.
MIT, siehe LICENSE.