Ghidraboy:Sharp SM83 / Ghidra的遊戲男孩擴展
非常實驗!沒有兼容性保證!
支持Ghidra版本:

特徵
- Sharp SM83(遊戲男孩中使用的CPU核心)支持雪橇
- Game Boy ROM加載器:
- 可以加載未賬的ROM(<= 32KB,例如Tetris)
- 可以加載銀行的ROM(> 32KB,例如Pokemon)
- 可以加載GreyScale Boot ROM(DMG/DMG0/MGB/SGB/SGB2)
- 可以加載顏色啟動ROM(CGB/CGB0)
- 基於硬件內存圖的內存塊
- 銀行的地區使用疊加層(todo:弄清楚是否有更好的支持方法)
- GB與GBC的差異已處理(例如,銀行WRAM)
- 硬件寄存器的符號(0xffxx範圍)
- GB與GBC的差異已處理(例如,Key1寄存器的存在)
如何安裝
- 下載預構建的Ghidraboy版本,或自己構建。
- 啟動Ghidra
- 文件 - >安裝擴展
- 按Plus圖標(“添加擴展”)
- 選擇構建或下載的Ghidraboy Zip文件
- 當提示正確加載擴展時,重新啟動Ghidra
如何構建
作為先決條件,您需要在某處安裝Ghidra(實際安裝,而不是Ghidra源代碼的副本!)。
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
或者
./gradlew -Pghidra.dir=/path/to/ghidra
然後,您可以在build/distributions目錄中找到構建的擴展。
打開問題 /問題
- 如果使用某些說明,則很難閱讀分解器輸出(例如旋轉,JP HL用於jumptables)
- 默認的“ ASM調用約定”假定所有寄存器都可以是輸入和/或輸出。輸入/輸出通常錯誤地猜測,因此幾乎每個功能都需要手動調整
- 疊加層是處理銀行存儲區域的唯一 /最佳解決方案嗎?目前,在銀行的ROM中,每個功能都需要手動解決至0x4000-0x7fff
執照
根據Apache許可證獲得許可,版本2.0。