Ghidraboy : Ghidra의 Sharp SM83 / Game Boy Extension
매우 실험적! 호환성 보장이 없습니다!
지원되는 GHIDRA 버전 :

특징
- Sharp SM83 (Game Boy에 사용 된 CPU 코어) Sleigh 지원
- 게임 보이 롬 로더 :
- 비은행되지 않은 ROM을로드 할 수 있습니다 (<= 32KB, 예를 들어 테트리스)
- 뱅킹 롬을로드 할 수 있습니다 (> 32KB, 예 : 포켓몬)
- Greyscale Boot ROM을로드 할 수 있습니다 (DMG/DMG0/MGB/SGB/SGB2)
- 컬러 부트 ROM을로드 할 수 있습니다 (CGB/CGB0)
- 하드웨어 메모리 맵을 기반으로 한 메모리 블록
- 은행 지역은 오버레이를 사용합니다 (TODO : 더 좋은 방법이 있는지 알아냅니다)
- GB 대 GBC 차이가 처리됩니다 (예 : 뱅크드 램)
- 하드웨어 레지스터의 기호 (0xffxx 범위)
- GB 대 GBC 차이가 처리됩니다 (예 : key1 레지스터의 존재)
설치 방법
- 사전 제작 된 ghidraboy 릴리스를 다운로드하거나 직접 구축하십시오.
- Ghidra를 시작하십시오
- 파일 -> 확장자 설치
- 플러스 아이콘 ( "확장 추가")을 누릅니다.
- 구축되거나 다운로드 된 ghidraboy zip 파일을 선택하십시오
- 확장을 올바르게로드하라는 메시지가 표시되면 GHIDRA를 다시 시작하십시오
구축 방법
전제 조건으로, 당신은 어딘가에 Ghidra 설치가 필요합니다 (Ghidra 소스 코드의 사본이 아닌 실제 설치!).
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
또는
./gradlew -Pghidra.dir=/path/to/ghidra
그런 다음 build/distributions 디렉토리에서 빌드 확장자 .zip을 찾을 수 있습니다.
열린 질문 / 문제
- 특정 지침이 사용되면 디 컴파일러 출력을 읽기가 어렵습니다 (예 : Jumptables의 경우 JP HL)
- 기본 "ASM 호출 규칙"은 모든 레지스터가 입력 및/또는 출력이 될 수 있다고 가정합니다. 입력/출력은 종종 잘못 추측되므로 거의 모든 기능에 수동 튜닝이 필요합니다.
- 오버레이는 뱅킹 메모리 영역을 처리하기위한 유일한 / 최상의 솔루션입니까? 현재 은행 ROM에서 0x4000-0x7fff에 대한 모든 기능 호출은 올바른 은행으로 수동으로 해결해야합니다.
특허
Apache 라이센스, 버전 2.0에 따라 라이센스.