Ghidraboy: Sharp SM83 / Game Boy Extension für Ghidra
Sehr experimentell! Keine Kompatibilitätsgarantien!
Unterstützte Ghidra -Versionen:

Merkmale
- Sharp SM83 (CPU -Kern in Game Boy) Unterstützung für Schlitten
- Game Boy Rom Loader:
- Kann ungeläte ROMs laden (<= 32 kb, z. B. Tetris)
- Kann Banked -ROMs laden (> 32 KB, z. B. Pokemon)
- Kann Grauskala -Boot -ROMs laden (DMG/DMG0/MGB/SGB/SGB2)
- Kann Farbstiefel -ROMs laden (CGB/CGB0)
- Speicherblöcke basierend auf der Hardwarespeicherkarte
- Banked -Regionen verwenden Überlagerungen (Todo: Finden Sie heraus, ob es eine bessere Möglichkeit gibt, sie zu unterstützen)
- GB vs GBC -Unterschiede werden behandelt (z. B. Banked WRAM)
- Symbole für Hardwareregister (0xffxx -Bereich)
- GB vs GBC -Unterschiede werden behandelt (z. B. Existenz des KEY1 -Registers)
- Game Boy -Patronen -Header -Datentypen
- Aufzählte Typen für einige Dinge
So installieren
- Laden Sie eine vorgebaute Ghidraboy -Veröffentlichung herunter oder bauen Sie es selbst auf.
- Starten Sie Ghidra
- Datei -> Erweiterungen installieren
- Drücken Sie das Plus -Symbol ("Erweiterung hinzufügen").
- Wählen Sie die erstellte oder heruntergeladene Ghidraboy -Zip -Datei aus
- Starten Sie Ghidra neu, wenn Sie aufgefordert werden, die Erweiterung ordnungsgemäß zu laden
Wie man baut
Als Voraussetzung müssen Sie irgendwo eine Ghidra -Installation haben (eine tatsächliche Installation, keine Kopie des Ghidra -Quellcode!).
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
oder
./gradlew -Pghidra.dir=/path/to/ghidra
Anschließend finden Sie eine gebaute Erweiterung .zip im build/distributions -Verzeichnis.
Öffnen Sie Fragen / Probleme
- Die Dekompilerausgabe ist schwer zu lesen, wenn bestimmte Anweisungen verwendet werden (z. B. dreht sich, JP HL für Jumptables).
- Standard "ASM Calling Convention" geht davon aus, dass alle Register Eingänge und/oder Ausgänge sein können. Eingänge/Ausgänge werden oft falsch erraten, sodass für fast jede Funktion eine manuelle Abstimmung erforderlich ist
- Sind Overlays die einzige / die beste Lösung für den Umgang mit Bankenspeicherbereichen? Derzeit muss in Banked-ROMs jeder Funktionsaufruf auf 0x4000-0x7fff manuell auf die richtigen Bank (en) gelöst werden
Lizenz
Lizenziert unter der Apache -Lizenz, Version 2.0.