Ghidraboy:GhidraのSharp SM83 / Game Boy Extension
非常に実験的です!互換性の保証はありません!
サポートされているGhidraバージョン:

特徴
- Sharp SM83(Game Boyで使用されるCPUコア)そりのサポート
- ゲームボーイROMローダー:
- 銀行のないROMをロードできます(<= 32kb、例:テトリス)
- バンク付きROMをロードできます(> 32kb、例えばポケモン)
- グレースケールブートROM(DMG/DMG0/MGB/SGB/SGB2)をロードできます
- カラーブートROM(CGB/CGB0)をロードできます
- ハードウェアメモリマップに基づくメモリブロック
- 銀行の地域ではオーバーレイを使用します(TODO:それらをサポートするより良い方法があるかどうかを把握しています)
- GB対GBCの違いは処理されます(例:バンク付きラム)
- ハードウェアレジスタのシンボル(0xffxx範囲)
- GB対GBCの違いは処理されます(例:key1レジスタの存在)
インストール方法
- 事前に作成されたGhidraboyリリースをダウンロードするか、自分で構築してください。
- Ghidraを始めます
- ファイル - >拡張機能をインストールします
- プラスアイコンを押します( "add extension")
- ビルドまたはダウンロードしたGhidraboy zipファイルを選択します
- 拡張機能を適切にロードするように求められたら、Ghidraを再起動します
構築方法
前提条件として、Ghidraのインストールをどこかに設置する必要があります(Ghidraソースコードのコピーではなく、実際のインストール!)。
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
または
./gradlew -Pghidra.dir=/path/to/ghidra
その後、 build/distributionsディレクトリに構築された拡張機能を見つけることができます。
開かれた質問 /問題
- 分解器の出力は、特定の指示を使用する場合は読み取りが困難です(例:回転する、JUMPTABLEのJP HL)
- デフォルトの「ASM呼び出し条約」は、すべてのレジスタが入力および/または出力になる可能性があることを前提としています。入力/出力はしばしば誤って推測されるため、ほぼすべての機能には手動チューニングが必要です
- オーバーレイは、銀行のメモリ領域を処理するための唯一の /最良のソリューションですか?現在、銀行のROMSでは、0x4000-0x7fffへのすべての関数呼び出しを正しい銀行に手動で解決する必要があります
ライセンス
Apacheライセンス、バージョン2.0に基づいてライセンスされています。