데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약
IDA Pro (Interactive Disassembler Professional)는 Hex-Rays가 개발한 업계 표준 바이너리 분석 도구입니다. 정적/동적 분석, 디컴파일, 디버깅을 통합하여 리버스 엔지니어링 워크플로우를 제공합니다. AI 정보보안 엔지니어는 취약점 분석, 악성코드 역공학, 펌웨어 분석 등에 활용합니다.
크로스-레퍼런스, 그래프 뷰, 타입 라이브러리로 바이너리 구조를 완벽히 재구성. 수천 개 함수도 탐색 가능.
Hex-Rays Decompiler가 어셈블리를 의사 C 코드로 변환. 분석 시간을 10배 단축.
IDAPython (Python 3) 기반 자동화. 수동 작업을 스크립트로 대체하여 대규모 분석 파이프라인 구축.
무료/오픈소스 대안(Ghidra, radare2, Binary Ninja)과 비교했을 때 IDA Pro의 강점은 디컴파일러 품질, 플러그인 생태계, 대규모 바이너리 처리입니다.
| 기능 | IDA Pro | Ghidra | radare2 |
|---|---|---|---|
| 디컴파일러 정확도 | ⭐ 최상 | ⭐⭐ 양호 | ⭐⭐ 보통 |
| 스크립팅 언어 | Python / IDC | Python / Java | Python / r2pipe |
| 플러그인 수 | 2,000+ (상업) | 500+ (오픈소스) | 1,000+ (커뮤니티) |
| 대형 바이너리 | 수백 MB 수용 | 제한적 | 메모리 의존 |
| 멀티플랫폼 디버깅 | Win/Linux/Mac/Android | Win/Linux/Mac | Win/Linux/Mac |
IDA의 내부 데이터베이스 구조와 주요 뷰를 이해하는 것이 첫걸음입니다.
Ctrl+XShift+F12로 문자열 목록을 열면 빠르게 상수/에러 메시지 탐색 가능. 악성코드 분석 시 C2 도메인 식별에 효과적.
# IDA Pro 8.3 Linux 설치 스크립트 (공식 다운로드 필요)
chmod +x idaprox83_linux.run
sudo ./idaprox83_linux.run --mode unattended --prefix /opt/ida
# 환경 변수 등록
echo 'export PATH=$PATH:/opt/ida' >> ~/.bashrc
source ~/.bashrc
# headless 모드로 바이너리 로드
ida64 -B -c sample.elf
# IDAPython 스크립트: 함수 목록 출력
import idautils
print(f"바이너리: {ida_nalt.get_input_file_path()}")
print(f"함수 개수: {len(list(idautils.Functions()))}")
for ea in idautils.Functions()[:10]: # 처음 10개
name = idc.get_func_name(ea)
print(f" 0x{ea:x}: {name}")
ida_pro.qexit(0) # IDA 종료
# CLI로 직접 실행
ida64 -S"list_funcs.py" -A sample.elf
Space : 그래프 뷰 ↔ 텍스트 뷰 전환N : 이름 변경 (함수/변수명); (세미콜론) : 주석 추가Ctrl+Shift+V : 디컴파일러 뷰 열기| 설정 | 위치 | 권장값 | 설명 |
|---|---|---|---|
| 분석 단계 (Analysis) | Options → Analysis | Enabled (Auto) | 초기 자동 분석 활성화. 대형 바이너리는 Tail call / Kernel 분석 체크. |
| 프로세서 타입 | File → Load file → Processor type | metapc / ARM / MIPS | 바이너리 아키텍처 수동 지정 (자동 실패 시). |
| 디컴파일러 옵션 | Options → Compiler settings | GCC / MSVC | 호출 규약 및 구조체 패딩 정확도 향상. |
| 플러그인 로드 | File → Plugins | 최소 필요만 | 비활성화 시 분석 속도 개선. 필요 시 Alt+F7로 수동 로드. |
| 디버거 백엔드 | Debugger → Select debugger | Remote GDB / WinDbg | 원격 디버깅 시 포트 및 인증 설정. |
| 문제 | 원인 | 해결책 |
|---|---|---|
| 디컴파일러가 코드를 인식 못함 | 분석이 불완전하거나 패킹됨 | Ctrl+Alt+R로 reanalyze. unpakcer 플러그인 적용 후 재분석. |
| 함수 목록이 너무 많음 (수만 개) | 라이브러리 함수까지 포함 | Options → General → Library function recognition 활성화. Alt+F5로 숨김. |
| 스크립트 실행 오류 (ImportError) | IDAPython 환경 불일치 | IDA 8.x는 Python 3.10+ 필요. python --version 확인 후 가상환경 재설정. |
| IDA가 대형 바이너리에서 느림 | 메모리/분석 과부하 | Options → Analysis → Kernel analysis 옵션 해제. 로딩 시 -o 옵션으로 특정 섹션만 로드. |
sig/ 디렉토리에 최신 .sig 파일 추가.