시간이 소모되어 기록.
Ghidra 는 미국 국가 안보국(NSA)에서 만들어 오픈 소스로 공개한 역어셈블리어 프레임워크 라고 한다.
(출처: https://ndb796.tistory.com/323 [안경잡이개발자:티스토리])
아래 항목중 막히는 부분이 있다면 챗GPT(본인은 유료 사용)에게 물어보면 알려줄 것이다.
무료로 쓸 경우 구글 제미나이는 코드분석에는 괜찮으나, 이런 안내에는 꽝이다.
■■ 필요한 툴들 및 준비 (좀 많음)
쓰려면 JDK(자바 개발킷) 가 설치되어 있어야 한다. 옛날엔 JRE 라는, 개발없이 쓰기만 하는 사람용 파일이 있었으나 JDK로 통합되어서 어쩔수 없이 JDK를 설치해야 한다.
* 주의사항 : Ghidra와 GDB 압축푸는 폴더는 루트폴더면 안된다. 하위폴더 하나 만들어 거기에 압축을 푼다.
* Ghidra 다운로드 깃허브 : https://github.com/nationalsecurityagency/ghidra
(압축만 풀면 되는 편한 방식임)
* 오라클 JDK 다운로드 페이지 : https://www.oracle.com/java/technologies/downloads/#java11-windows
아래 과정은 전부 Ghidra 와 Duckstation 을 연결할때 오류를 수정하기 위해 하는 것이다.
안한다면 항목마다 오류를 보게 될것이다.
■ Noward GDB 압축 풀기 + 파이썬 및 pip 설치
Ghidra와 Duckstation(덕스테이션) 과의 연결을 하기 위해서는 GDB 라는 게 필요한데, 그냥 GDB는 안되고, 다음 조건을 만족해야 한다.
- PS1의 MIPS 3000 어셈블리 해석이 될 것 + 파이썬 지원 + xml 지원
=> noword GDB 라는게 있었다
* noward GDB 깃허브 : https://github.com/noword/GDB-Windows-Binaries 의 Code 버튼 -> Download ZIP 을 눌러 다운받고 압축해제.
실행파일을 보면 파이썬3.10 까지만 지원되는걸 알 수 있다.
정확히 파이썬 3.10 을 설치해야 한다. (높은 버전도 될것 같긴 한데 안해봄. 해보면 수정)
* 파이썬 3.10 다운로드 : https://www.python.org/downloads/release/python-3100/
(시간지나면 정책에 의해 링크 잘릴수도 있음. 그러면 어쩔수없이 나중버전 설치해야 할듯)
=> 파이썬 설치시 폴더는 본인이 custom으로 지정 추천, 설치폴더의 python310.lib 을 noward GDB 압축푼 폴더(실행파일이 있는 폴더) 에 넣는다.
인스톨러 첫 화면에서 '자동으로 PATH 등록' 비슷한 옵션에 체크한다. 만일 빼먹었다면, 고급시스템설정 환경변수 -> 사용자변수 PATH 에 파이썬이 설치된 폴더와 하위폴더인 \Scripts\ 를 추가해야 한다.
* pip (패키지 인스톨러) 설치
파이썬 설치시 \scripts\ 폴더에 pip 이 없으면 설치해야 하는데, cmd 에서 다음을 입력
python.exe -m ensurepip --upgrade
그럼 pip 파일이 생길 것이다.
■ CMD에서 'Powershell' 실행하여 권한변경
Powershell 에서 다음을 실행하여 Y를 누른다.
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
■ Ghidra 에 포함된, 필요한 파이썬 패키지 설치
* cmd에서 다음 두개를 입력해 설치 (경로에서 <기드라 압축푼경로>는 직접 수정)
▶ 1.
py -3.10 -m pip install --no-index ^
--find-links "<기드라 압축푼경로>\Ghidra\Debug\Debugger-rmi-trace\pypkg\dist" ^
"<기드라 압축푼경로>\Ghidra\Debug\Debugger-rmi-trace\pypkg\dist\ghidratrace-12.1-py3-none-any.whl"
▶ 2.
py -3.10 -m pip install --no-index ^
--find-links "<기드라 압축푼경로>\Ghidra\Debug\Debugger-rmi-trace\pypkg\dist" ^
--find-links "<기드라 압축푼경로>\Ghidra\Debug\Debugger-agent-gdb\pypkg\dist" ^
"<기드라 압축푼경로>\Ghidra\Debug\Debugger-agent-gdb\pypkg\dist\ghidragdb-12.1-py3-none-any.whl"
■ Ghidra 내부 코드수정 (알려지지 않은 레지스터이름을 받았을때 pass 처리)
(챗GPT의 안내로 수정된 파일임)
▶ <기드라 압축푼경로>\Ghidra\Debug\Debugger-agent-gdb\pypkg\src\ghidragdb\commands.py
파일을 열어서 615줄 쯤에 있는 putreg 함수를 수정해야 하는데, 복붙하자면 길어지니 수정된 commands.py 파일 링크
: https://drive.google.com/file/d/1VzomzBB5PORi75ZQCX7-PGllkg_ItfY3/view?usp=drive_link
(원본 파일을 백업해 두고 싶으면 마음대로)

.png)
.png)




-01.jpg)
