Ghidraboy: Sharp SM83 / Game Boy Extension для Ghidra
Очень экспериментально! Нет гарантий совместимости!
Поддерживаемые версии ghidra:

Функции
- Sharp SM83 (CPU Core, используемое в Game Boy) Поддержка Sleigh
- Game Boy Rom Loader:
- Может загрузить небангированные ПЗУ (<= 32 КБ, например, тетрис)
- Может загрузить банкновые ПЗУ (> 32 КБ, например, Pokemon)
- Можно загрузить ROMS GreyScale Boot (DMG/DMG0/MGB/SGB/SGB2)
- Можно загрузить цветовые ROMS (CGB/CGB0)
- Блоки памяти на основе карты аппаратной памяти
- Банковские регионы используют наложения (Todo: выясните, есть ли лучший способ их поддержать)
- Различия GB против GBC обрабатываются (например, Banked Wram)
- Символы для аппаратных регистров (диапазон 0xffxx)
- Обрабатываются различия GB против GBC (например, существование регистра Key1)
- Типы данных заголовка картриджа Game Boy
- Перечисленные типы для некоторых вещей
Как установить
- Загрузите предварительно построенный релиз Ghidraboy или создайте его самостоятельно.
- Начни Гидру
- Файл -> Установить расширения
- Нажмите значок Plus («Добавить расширение»)
- Выберите встроенный или загруженный файл Zip Ghidraboy
- Перезапустите Ghidra, когда будет предложено правильно загрузить расширение
Как построить
В качестве предпосылки вам нужно где -то иметь установку Ghidra (фактическая установка, а не копия исходного кода Ghidra!).
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
или
./gradlew -Pghidra.dir=/path/to/ghidra
Затем вы можете найти встроенный растяжение .zip в каталоге build/distributions .
Открытые вопросы / проблемы
- Вывод декомпилятора трудно читать, если используются определенные инструкции (например, jp hl для jumptables)
- По умолчанию «Конвенция о вызове ASM» предполагает, что все регистры могут быть входами и/или выходами. Входы/выходы часто догадаются неправильно, поэтому для каждой функции требуется ручная настройка практически для каждой функции
- Являются ли наложения единственным / лучшим решением для обработки областей памяти в банке? Прямо сейчас в Банковских ПЗУ каждый вызов функции на 0x4000-0x7fff должен быть вручную разрешен в правильный банк (ы)
Лицензия
Лицензирован по лицензии Apache, версия 2.0.