
실행 파일에서 COFF 오브젝트 파일을 추출하는 정적 바이너리 계측 도구로, 임의의 위치에 코드/데이터 삽입을 가능하게 하여 블랙박스 퍼징 및 IDA Pro를 통한 바이너리 패칭에 사용됩니다.
__IDA2Obj__는 __SBI (Static Binary Instrumentation)__를 구현하는 도구입니다.
작동 흐름은 간단합니다:
환경 준비:
idapython.cfg에서 AUTOIMPORT_COMPAT_IDA695 = YES로 설정하여 구형 IDA 6.x 스타일의 API를 지원합니다.pip install cough작업 공간으로 사용할 폴더를 생성합니다.
퍼징하려는 대상 바이너리를 작업 공간에 복사합니다.
IDA Pro에 바이너리를 로드하고, __Load resources__와 __manually load__를 선택하여 바이너리의 모든 세그먼트를 로드합니다.
자동 분석이 완료될 때까지 기다립니다.
MagicIDA/main.py 스크립트를 실행하여 객체 파일을 덤프합니다.
${workspace}/${module}/objs/afl 안에 위치합니다.TRACE_MODE라는 빈 파일을 생성하면 출력 객체 파일은 ${workspace}/${module}/objs/trace 안에 위치합니다.${workspace}/${module} 안에 3개의 파일도 생성됩니다:
utils/LibImports.py 스크립트를 실행하여 라이브러리 파일을 생성합니다.
${workspace}/${module}/libs 안에 위치하며, 이후 링크에 사용됩니다.터미널을 열고 작업 공간 디렉터리로 변경합니다.
utils/link.bat를 사용하여 모든 객체 파일과 라이브러리 파일을 링크합니다.
utils/link.bat GdiPlus dll afl /RELEASE${workspace}/${module} 안에 새 바이너리와 pdb 파일이 생성됩니다.utils/PatchPEHeader.py를 사용하여 새로 빌드된 바이너리를 패치합니다.
utils/PatchPEHeader.py GdiPlus/GdiPlus.afl.dllutils/register_msdia_run_as_administrator.bat를 실행해야 할 수 있습니다.실행 및 퍼징.
HITB Slides : https://github.com/jhftss/jhftss.github.io/blob/main/res/slides/HITB2021SIN%20-%20IDA2Obj%20-%20Mickey%20Jin.pdf
Demo : https://drive.google.com/file/d/1N3DXJCts5jG0Y5B92CrJOTIHedWyEQKr/view?usp=sharing