
1. 사전지식
1) Binary Diffing 이란
원데이 취약점 분석을 위해 패치된 취약점 코드를 특정할 때 사용한다
2) Bindiff란
binary를 diffing할 때 쓰는 툴, IDA의 플러그인으로 쓸 수 있다.
2. 환경 설정
1) Bindiff 다운로드 및 확인
(1) 다운로드
https://github.com/google/bindiff/releases
Releases · google/bindiff
Quickly find differences and similarities in disassembled code - google/bindiff
github.com
여기서 msi파일을 다운로드해서 실행한다.

Next를 누르고 다운로드를 완료하면 된다.
(2) 확인
(3) 발생할 수 있는 오류
위 사진처럼 플러그인에 BinDiff가 안 뜰 수 있다. 이 경우 IDA가 저장된 폴더의 이름을 정직하게 'IDA' 로 설정해보자.
3. Bindiff 사용
1) 대상 파일 확보
취약점이 존재하는 바이너리와 패치된 바이너리(이왕이면 패치 직후)의 Binexport 확장자 파일을 확보한다

2) IDA에서 bindiff 실행
IDA 내 플러그인으로 설치된 bindiff에서는 BinExport 파일을 생성해줄 필요없이 IDA에 현재 분석중인 파일이 primary 파일이 되어 bindiff를 선택한 후 secondary 파일만 선택해주면 된다. idb파일도 되고 바이너리 파일도 된다.

이때 당연히 primary는 패치전 파일, secondary에는 패치 후 파일을 넣어준다.
<결과>
1. Matched Function

두 파일에서 같은 함수를 출력하고 다른 부분이 있음을 출력하는 파트이다.
2. Statistics

3. Primary Unmatched
Primary Binary에만 있는 함수들

4. Secondary Unmatched
Secondary Binary에만 있는 함수들

4. Bindiff.jar 로 분석
IDA 내 플러그인이 아닌 bindiff.jar의 경우 1번처럼 BinExport 파일을 생성해줄 필요가 있다.
1) bindiff 표 보는 법
similarity
두 함수 간의 유사성
confidence
매칭의 신뢰성
change
함수가 변경되었는지 여부
EA primary
Primary Binary에서 해당 함수의 시작 주소
Name primary 정의
Primary Binary에서 함수의 이름
2) tree 보는 법
ida에서 함수를 우클릭하고 graph 보기를 하면

bindiff.jar가 켜지며

이렇게 트리형태로 출력된다.
'이예은' 카테고리의 다른 글
| plt와 got (0) | 2025.01.31 |
|---|---|
| lua 문법과 lua에서 발생할 수 있는 취약점 (0) | 2025.01.12 |
| 파일 시그니처 분석 (0) | 2024.11.15 |

stellarflare 님의 블로그 입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!