ghidra delinker extension
v0.5.0
이 Ghidra 확장을 사용하면 프로그램의 일부를 개체 파일로 내보낼 수 있습니다. 이러한 객체 파일에는 유효한 메타데이터(기호, 재배치 테이블…)가 있으므로 추가 처리를 위해 툴체인에서 직접 재사용할 수 있습니다.
사용 사례에는 다음이 포함됩니다.
지원되는 명령어 세트 아키텍처 및 객체 파일의 매트릭스:
x86 | MIPS | |
---|---|---|
커피 | ✅ | |
꼬마 요정 | ✅ | ✅ |
GHIDRA_INSTALL_DIR
환경 변수를 정의하세요.gradle buildExtension
실행합니다. Ghidra 확장 아카이브는 dist/
디렉터리 내에 생성됩니다.
File > Install Extensions…
사용하여 Ghidra 인스턴스에 확장을 설치합니다.File > Configure
사용하여 RelocationTableSynthesizedPlugin
플러그인을 활성화합니다. Relocation table synthesizer
분석기 실행(원샷 모드에서 사용 가능)File > Export Program…
사용하여 재배치 가능한 개체 파일 내보내기를 호출합니다. 재구성된 재배치는 Window > Relocation table (synthesized)
통해 볼 수 있습니다.
개체 파일은 세 부분으로 구성됩니다.
여러 개체 파일에서 실행 파일을 생성하기 위해 링커가 호출되면 다음이 수행됩니다.
일반적으로 재배치 테이블은 이 프로세스 후에 폐기되고 디버깅 기호가 유지되지 않으면 기호 테이블도 삭제되어 재배치할 수 없는 섹션 바이트만 남습니다. 그러나 신중한 분석을 통해 이 데이터를 다시 생성할 수 있으며 이를 통해 프로그램을 다시 개체 파일로 효과적으로 연결 해제 할 수 있습니다.