EYEN

IDA 플러그인으로는 작동이 안 되는 bindiff쓰기 본문

환경설정 및 배경지식

IDA 플러그인으로는 작동이 안 되는 bindiff쓰기

EYEN 2024. 10. 14. 08:15

 

diaphora, darumgrim 등등 다른 diffing 툴도 써봤는데 유료이거나 해결할 실마리가 안 보이는 오류가 있어서 그냥 bindiff를 쓰기로 했습니다.. 

 

다른 분들은 IDA에서 bindiff를 바로바로 볼 수 있는 것 같은데 저는 그게 안됐습니다. 조금 번거롭긴한데 어쩔 수 없죠... 사용과정이 어렵지 않아 다행입니다. 

 

1. bindiff를 다운

https://github.com/google/bindiff/releases

 

Releases · google/bindiff

Quickly find differences and similarities in disassembled code - google/bindiff

github.com

 

저는 혹시 몰라서 다운받을 때 IDA 폴더 명을 'IDA'로 바꿨습니다. 

다운로드 후 IDA에서 Edit->plugins에서 Binexport와 bindiff를 확인할 수 있습니다.

 

 

저는 여기서 BinDiff를 클릭했을 때 secondary 폴더 안의 데이터베이스를 찾을 수 없다고 떴습니다. secondary 폴더 안에 db 파일을 넣어놓고 실행했는데도 말이죠... 저 BinDiff만 클릭하면 방금 넣어놓은 db파일이 사라져버리는 신기한 경험을 할 수 있었습니다.

 

2. '.Binexport' 파일 생성하기

원하는 파일을 ida에서 연 뒤 edit->Plugins->Binexport를 클릭합니다. 

'BinExport v2 Binary Export' 버튼을 클릭해서 원하는 폴더에 넣고 위치만 잘 기억해놓습니다. 

 

3. Bindiff.jar 실행하기

보통 Program Files\Bindiff\bin 에 아래와 같이 실행파일들이 있을텐데요.

CLI에서 bindiff.exe를 사용해도 되지만, bindiff.jar 파일을 클릭하면

 

이렇게 Bindiff를 사용할 수 있게 됩니다. 

 

4. Binexport 파일 열기

워크스페이스를 원하는 경로에 새로 열고

Diffs-> New Diff 를 클릭하면 다음과 같은 창이 뜹니다.

여기에서 아까 추출했던 .Binexport파일의 경로를 넣어주면 됩니다.

Primary file: 취약점이 존재하는 파일.BinExport

Secondary file: 취약점을 패치한 파일.BinExport

Diff Destination: Primary file vs Secondary file을 저장할 경로

 

이렇게 입력하고 Diff를 클릭합니다. 

제가 원하는 대로 나왔습니다. 보통 두 버전에서 변경된 함수는 많아도 10개를 넘지 않더라구요. 

'환경설정 및 배경지식' 카테고리의 다른 글

(5)참고자료 내용 정리  (0) 2024.11.06
레이스 컨디션  (0) 2024.09.27
AFL 퍼저 공부  (0) 2024.09.25
뇌를 자극하는 시스템 프로그래밍  (0) 2024.09.25
Firebase 보안 규칙  (0) 2024.05.20