Reversing
[IDA plugin] Diaphora
Tribal
2018. 6. 18. 14:01
IDA 지원 버전 : 6.9부터
IDA 최신 버전에서 사용하는 bindiff라고 생각하면 된다. 바이너리 코드에서 달라진 부분을 찾아 비교해서 보여주는 플러그인이다. IDA 버전 7.3과 7.4를 기준으로 사용할 diaphora 버전과 python 사용 버전이 바뀐다.
diaphora 다운로드 시 버전 참고 사항
- IDA 버전 6.95 ~ 7.3 (python 2.X 사용) : "https://github.com/joxeankoret/diaphora/releases/1.2.4" 다운로드
- IDA 버전 7.4 이상 (python 3.X 사용) : "https://github.com/joxeankoret/diaphora/releases" 에서 그냥 최신 버전 다운로드
설치
- IDA 버전에 맞게 diaphora를 다운로드하고 압축을 푼다.
git clone으로 생성된 폴더 자체를 IDA 설치 경로의 plugins으로 복사 (e,g) C:\Program Files\IDA\plugins
그냥 diaphora 다운로드 경로만 잘 기억해두자.- 끝
사용방법
1. 원래 Edit - Plugins - Diaphora - Export or diff를 누르면 된다고 하는데 안 뜸... (안 되니깐 무시...)
1. sample1 파일을 IDA로 Open 한다.
2. File - Script file - diaphora.py 실행
3. IDA database 파일을 SQLite 파일로 생성한다. 설정이 여러가지 있으므로 알아서 설정한다. 아래 사진은 기본 설정이다.
4. sample2 파일을 IDA로 Open 한다.
5. IDA database 파일을 SQLite 파일로 생성한다. 이 때, 3번 과정과 다르게 SQLite database to diff against에 3번 과정에서 생성된 sample1.sqlite를 지정해준다.
6. OK를 누르면 diffing이 된다.
7. Ratio가 매칭률 100% 기준으로 1.000으로 설정되는데, partial matches 탭에서 0.9~~처럼 대강 비슷한 함수부터 시작해서 분석하면 된다.
참고
- 공식 pdf 설명 : https://github.com/joxeankoret/diaphora/blob/master/doc/diaphora_help.pdf
- python 파일별 설명 : https://securityonline.info/diaphora-ida-python-bindiffing-plugin/
- 사용법 설명 : http://joxeankoret.com/blog/2015/03/13/diaphora-a-program-diffing-plugin-for-ida-pro/