bindiffhelper
GHIDRA 프로젝트에서 Bindiff를 사용하여 일치하는 기능을 찾고 자동으로 이름을 바꾸는 GHIDRA 확장 장치 (Bindiff 6, 7, 8 지원). Bindiff 매뉴얼을 확인하여 작동 방식과 기능 / 기본 블록과 일치하는 방법을 확인하십시오. 그러나이 확장으로 Bindiff는 Ghidra 내에서 자동화되므로 바이너리를 직접 나누지 않아도됩니다.
GitHub의 문제 기능을 통해 버그를보고하십시오
그것이하는 일 / changelog
v0.6
- SQLITE 드라이버 라이브러리 업데이트, 이제 Apple Silicon에서 실행해야합니다.
- 혼합 된 기능 간의 외부 텍스트 차이를 지원합니다 ( #24 참조)
- UI 업데이트
v0.5
- 지원 Bindiff 8
- GHIDRA 11.1에 대한 출시
v0.4.3
v0.4.2
- 모든 기능을 가져 오기 위해 함수 추가 (테이블에서 확인 된 기능뿐만 아니라)
- 기능 추가 테이블의 여러 요소에 대한 확인란을 전환합니다.
- GHIDRA 10.3을 지원하기위한 업데이트
v0.4.1
- Gradle 7.5 및 Ghidra 10.1을 지원하기위한 업데이트
v0.4.0
v0.3.2
- 동일한 프로젝트와 다른 파일로 Diffing이 작동하지 않는 버그를 수정했습니다.
- 짧은 이름 (<3 문자>)이있는 파일이 변하지 않는 버그를 수정했습니다.
v0.3.1
- "Project"옵션을 통해 파일을 열 때 충돌을 수정했습니다.
v0.3
- 목록의 채색 일치 기능
- 다른 바이너리에 링크하는 목록에서 일치하는 함수에 주석 추가
- 일부 빌드에서 Protobuf 라이브러리가 누락 된 버그 수정
- 새 파일로드 메뉴
v0.2
- 파일을 가져올 파일을 확인 해야하는 버그를 수정하십시오.
- 프로젝트 파일 선택 대화 상자의 크기를 높입니다
v0.1
- Bindiff Bindiff the binary the binary the binary the binary the binary the ghidra와 동일한 ghidra 프로젝트의 다른 바이너리가있는 결과를 보여주고 기능 이름을 가져 오십시오.
- 두 개의 .Binexport 파일에서 Bindiff 6으로 생성 된 Bindiff 파일을 열고 GHIDRA에서 일치하는 함수 이름을 가져옵니다.
다음 릴리스
- 기능 이름 및 기능 매개 변수 가져 오기 (유형 및 이름)
- Ghidra에서 열린 이진을 외부 .Binexport (예 : IDA에서)와 비교하십시오.
- 다른 기능에 대한 그래프를 표시하려면 Bindiff 6 GUI와의 커뮤니케이션
설치 방법
GHIDRA 버전과 호환되는 경우 릴리스에서 .zip-file을 다운로드하거나 아래에서 빌드하는 방법을 확인하십시오.
- Ghidra를 열었습니다
- 기본 창 에서 : 파일> 확장자 설치 ...
- 오른쪽 상단의 +-Button을 클릭하고 BindiffHelper ZIP 파일을 선택하십시오.
- 플러그인 관리자를 닫습니다. GHIDRA를 다시 시작하여 새 플러그인을로드하십시오
- 아래 사용법을 참조하십시오
권장 다른 도구
- Binexport 플러그인 바이너리 또는 특정 ghidra 버전의 소스에서 컴파일
- bindiff (https://zynamics.com/software.html)
이것들이 없으면 .Bindiff 파일 만 가져올 수 있으며 자동으로 내보내지 않고 GHIDRA 프로젝트와 다릅니다.
용법
Ghidra에서 파일을 열어 코드 탐색기에 플러그인이로드되었는지 확인하고 코드 탐색기 에서 파일> 구성 으로 이동하십시오.
오른쪽 상단의 작은 플러그 아이콘을 클릭하십시오.
BindiffhelperPlugin 옆의 확인란이 확인되었는지 확인하십시오.
외부를 가져옵니다 .Bindiff
해당 .Binexport-Files는 동일한 폴더에 있어야합니다.
코드 브라우저에서 이름을 가져올 파일을 열고 Window-> bindiffhelper 로 이동하십시오.
Open From Bindiff 버튼 또는 메뉴 항목을 사용하여 .Bindiff 파일을 선택하십시오.
가져올 모든 기능 이름을 선택하고 오른쪽 상단 또는 메뉴 항목의 기능 이름 가져 오기 버튼을 클릭하십시오.
Ghidra 프로젝트의 파일을 비교하십시오
Window-> bindiffhelper 로 이동하여 Binexport 또는 Bindiff와 관련된 경고가 없는지 확인한 다음 프로젝트에서 열기를 클릭하십시오.
트리에서 다른 파일을 선택하고 확인을 클릭하십시오.
구축 방법
요구 사항 :
- GHIDRA 설치 (https://ghidra-sre.org) 또는 소스에서 컴파일됩니다
- 일부 JDK. Ghidra가 구축 된 방법과 사용중인 다른 플러그인에 따라 특정 제한 사항이있을 수 있습니다. Temurin 21 LTS를 사용하는 것이 좋습니다. 현재 Binexport 및 Bindiffhelper와 함께 작동하는 것으로 보입니다.
- Gradle (7.5, 8.10으로 테스트)
저장소를 복제하십시오
각 프로토콜 버퍼 정의를 위해 Binexport에 의존하기 때문에 저장소를 재귀 적으로 복제하십시오.
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
빌드하십시오
GHIDRA_INSTALL_DIR 환경 변수를 GHIDRA 설치 DIR로 설정해야합니다. 다른 JDK가 설치된 경우 환경 변수 JAVA_HOME 이 GHIDRA 설치가 사용하는 것을 가리 키십시오.
확장자는 Ghidra 버전을 위해 구체적으로 구축됩니다.
그런 다음 쉘에있는 Bindiffhelper 폴더 로 가서
이것은 각 하위 모듈에서 Binexport와 부모 디렉토리의 Bindiffhelper를 모두 구축합니다. Dist 디렉토리에 .zip-file이 생성되어야합니다. 위의 지침에 따라이 .zip 파일을 사용하여 설치하십시오.
개발 / 디버깅 설정
때로는 Ghidra와 함께 확장을 디버깅 할 수있는 것이 유용합니다. 다음은 다음과 같습니다.
- Ghidra를 복제하고 구축하고 Gradle이 DevGuide에 따라 Eclipse 프로젝트를 만듭니다.
- 프로젝트를 Eclipse로 가져옵니다 (확장 개발을위한 관련 플러그인이 있는지 확인)
- Ghidradev를 구축하고 설치하십시오
- Ghidra 빌드를 풀고 Ghidradev를 연결하십시오.
GHIDRA_INSTALL_DIR 환경 변수를 설정해야 할 수도 있습니다 - Eclipse에서 Ghidra를 실행하고 Binexport Extension을 설치하십시오
-
gradle build eclipse 사용하여 Bindiffhelper Eclipse 프로젝트를 만듭니다 - Eclipse로 가져 와서 Ghidradev를 사용하여 Ghidra 빌드에 연결하십시오.
- 디버그 as-> ghidra
Eclipse에서 확장으로 Ghidra를 디버깅 할 때 확장자가 Ghidra에 자동으로로드됩니다 (일반적인 확장 설치를 거치지 마십시오). 그러나 코드 탐색기에서 플러그인을 활성화해야합니다.
참조
- https://github.com/google/bindiff/releases
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
아이콘의 아이콘 : fatcow 무료 아이콘