Skip to content

Latest commit

 

History

History
73 lines (53 loc) · 3.06 KB

README.DE.md

File metadata and controls

73 lines (53 loc) · 3.06 KB

agent

Lines of code

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.

Was drin ist

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.

agent.zip

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.

Bauen

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.

Lizenz

MIT, siehe LICENSE.