1.1 목적과 범위

이 문서는 Windows(PE)와 Linux(ELF) 실행 파일을 디스어셈블하여 분석할 때 쓰이는 대표 역공학 도구와 라이브러리를 조사하고, 각 도구의 특징·장단점·적합한 용도를 비교합니다. 요청에 따라 Ghidra와 Capstone은 가장 상세하게 다루며, 모든 도구에 대해 바로 복사해 쓸 수 있는 기본 템플릿(skeleton) 코드를 수록했습니다.

버전 번호와 가격은 작성일(2026-10-21) 기준이며, 상용 도구의 가격은 자주 바뀌므로 구매 전 공식 페이지에서 다시 확인해야 합니다.

1.2 도구 분류

역공학 도구는 역할에 따라 크게 다섯 범주로 나눌 수 있습니다. 실제 분석에서는 한 도구만 쓰기보다 범주가 다른 도구를 조합하는 경우가 대부분입니다.

범주 역할 대표 도구
통합 분석 플랫폼
(SRE 프레임워크)
파일 로딩, 자동 분석(함수·참조·타입 복구), 디스어셈블, 디컴파일, GUI, 스크립팅을 한 번에 제공 Ghidra, IDA Pro, Binary Ninja, radare2 / Rizin(Cutter)
디스어셈블러 엔진
(라이브러리)
기계어 바이트열 → 명령어로 해석. 파일 포맷·함수 인식은 하지 않음. 다른 도구에 내장되는 부품 Capstone, Zydis, iced-x86
바이너리 분석 프레임워크 CFG 복구, 중간 표현(IR), 심볼릭 실행, 자동화 분석 angr (+ 동일 계열: Unicorn 에뮬레이터, Keystone 어셈블러)
디버거 (동적 분석) 실행 중 프로세스의 명령어·레지스터·메모리 관찰 및 제어 x64dbg(Windows), GDB(+pwndbg/GEF, Linux), WinDbg
CLI 유틸리티 / 포맷 파서 빠른 디스어셈블 덤프, 헤더·섹션·임포트 파싱 objdump, llvm-objdump, dumpbin, readelf / LIEF, pefile, pyelftools

1.3 핵심 용어

•    디스어셈블(Disassemble): 기계어를 어셈블리 명령어로 변환. 방식에 따라 선형 스윕(linear sweep, objdump·Capstone 기본 사용법)과 재귀 하강(recursive descent, Ghidra·IDA 등 통합 도구)이 있습니다. 재귀 하강 방식은 코드 사이에 섞인 데이터를 잘못 해석하는 문제가 적습니다.

•    디컴파일(Decompile): 어셈블리를 C와 비슷한 의사 코드(pseudo-code)로 복원. Ghidra·IDA(Hex-Rays)·Binary Ninja·angr가 자체 디컴파일러를 제공합니다.

•    중간 표현(IR): 아키텍처에 독립적인 명령 표현. Ghidra의 P-code, Binary Ninja의 BNIL(LLIL/MLIL/HLIL), angr의 VEX, radare2의 ESIL 등이 있으며, 여러 CPU를 같은 방식으로 분석하게 해 줍니다.

•    Headless 분석: GUI 없이 스크립트로 분석을 실행하는 방식. 대량 샘플 처리, CI 파이프라인 연동에 필요합니다.

2.1 기본 정보 비교

도구 유형 실행 환경 / 분석 대상 라이선스·비용 디컴파일러 자동화 API 확인 버전
Ghidra 통합 플랫폼 Win/Linux/macOS (JDK 21+)
PE, ELF, Mach-O 등 다수
Apache 2.0
무료
있음(모든 지원 CPU) Java, Python(PyGhidra), Headless 12.1.4
(2026-09-21)
Capstone 디스어셈블 엔진 C 라이브러리, 대부분 OS
원시 바이트열
BSD-3
무료
없음 C, Python, Rust, Go, .NET, Java 등 5.0.9 안정판
6.0.0-Alpha11
IDA Pro / Free 통합 플랫폼 Win/Linux/macOS
포맷·CPU 매우 다양
상용(연 구독)
Free·Home 별도
Hex-Rays(에디션별 범위 상이) IDAPython, C++ SDK, idalib 9.3 (2026-02)
9.4 베타
Binary Ninja 통합 플랫폼 Win/Linux/macOS 상용
Free 에디션 있음
있음 (HLIL) Python, C++, Rust 6.0 Krypton
(2026-09-03)
radare2 통합 프레임워크(CLI) 거의 모든 OS LGPL-3.0
무료
pdc(간이), r2ghidra 플러그인 r2pipe(다수 언어) 6.2.4
Rizin / Cutter 통합 프레임워크 + Qt GUI Win/Linux/macOS LGPL-3.0 / GPL-3.0
무료
rz-ghidra (Cutter 기본 포함) rzpipe, C API Rizin 0.8.x
Cutter 2.4.x
x64dbg 디버거 Windows 사용자 모드
PE(x86/x64)
GPL-3.0
무료
없음 스크립트, C/C++ 플러그인 2026.05.27
GDB 디버거 Linux 중심 (Windows MinGW) GPL-3.0
무료
없음 Python API 배포판 패키지
objdump 등 CLI 디스어셈블러 Linux/Windows GPL / Apache 2.0
무료
없음 셸 스크립트 binutils / LLVM
angr 분석 프레임워크 Python (Linux 권장) BSD-2
무료
있음 (실험적 성격) Python 10.0.4.post1
Zydis / iced-x86 x86 전용 디코더 C / Rust(+Python, .NET, JS) MIT
무료
없음 C / Rust·Python 등 Zydis 4.x
iced 1.21.0
LIEF / pefile / pyelftools 포맷 파서 Python, C++ Apache 2.0 / MIT / Public Domain 없음 Python, C++ LIEF 1.0.0
pefile 2024.8.26

버전은 2026-10-21에 GitHub 릴리스 페이지, 공식 블로그, PyPI에서 확인한 값입니다. GDB·objdump는 OS 배포판에 포함된 버전을 쓰는 경우가 일반적이라 고정 버전을 적지 않았습니다.

2.2 기능 평가 매트릭스

아래 평가는 조사 내용과 일반적인 사용 경험을 종합한 상대적·주관적 평가입니다(●5단계, 많을수록 우수). 비용 항목은 저렴할수록 점수가 높습니다.

도구 디스어셈블 품질 디컴파일 자동화·API 학습 용이성 동적 분석 비용
Ghidra ●●●●○ ●●●●○ ●●●●○ ●●●○○ ●●●○○ ●●●●●
IDA Pro ●●●●● ●●●●● ●●●●● ●●●○○ ●●●●○ ●○○○○
Binary Ninja ●●●●○ ●●●●○ ●●●●● ●●●●○ ●●●○○ ●●●○○
radare2 / Rizin ●●●○○ ●●○○○ (플러그인 시 ●●●●○) ●●●●○ ●●○○○ ●●●○○ ●●●●●
Capstone ●●●●○ (명령어 단위) 해당 없음 ●●●●● ●●●●● 해당 없음 ●●●●●
Zydis / iced-x86 ●●●●● (x86 한정) 해당 없음 ●●●●○ ●●●●○ 해당 없음 ●●●●●
angr ●●●○○ ●●○○○ ●●●●● ●●○○○ ●●●○○ (심볼릭) ●●●●●
x64dbg ●●●●○ 해당 없음 ●●●○○ ●●●●○ ●●●●● (Windows) ●●●●●
GDB(+pwndbg) ●●●○○ 해당 없음 ●●●●○ ●●●○○ ●●●●● (Linux) ●●●●●
objdump ●●○○○ 해당 없음 ●●○○○ ●●●●● 해당 없음 ●●●●●

 

==== (중략) ====

 

상황 / 목적 1순위 보조 도구 이유
예산 없이 본격 정적 분석 Ghidra Cutter(rz-ghidra), x64dbg/GDB 무료로 디컴파일러·자동 분석·협업까지 제공
상용 악성코드 분석·대형 바이너리 IDA Pro x64dbg, Ghidra(교차 검증) 최고 수준 품질·FLIRT/Lumina·생태계
분석 자동화·연구(IR 기반) Binary Ninja angr BNIL과 깔끔한 API, headless(Commercial 이상)
자체 도구·스캐너 개발 Capstone LIEF/pefile/pyelftools, Unicorn 가볍고 멀티 아키텍처, BSD 라이선스
x86 전용 고정밀 디코딩 Zydis / iced-x86 LIEF 최신 x86 확장·정확도·성능
대량 샘플 배치 처리 Ghidra Headless / PyGhidra idalib, Binary Ninja headless 무료로 수천 개 샘플 자동 분석 가능
Windows 동적 분석·언패킹 x64dbg Ghidra/IDA Windows 사용자 모드 디버깅 표준
Linux 동적 분석·익스플로잇 GDB + pwndbg/GEF Ghidra, angr 어디서나 사용 가능, Python 자동화
CTF·빠른 트리아지 radare2 / Cutter objdump, angr 가볍고 터미널 친화적, 심볼릭 실행 결합
펌웨어·임베디드 CPU Ghidra Capstone, radare2 Sleigh로 다양한 CPU를 디컴파일

4.1 권장 조합 워크플로우

•    트리아지: pefile/LIEF로 헤더·섹션 엔트로피·임포트 확인 → 패킹 여부 판단.

•    정적 분석: Ghidra(또는 IDA/Binary Ninja)로 자동 분석 후 핵심 함수 디컴파일·이름 정리.

•    동적 확인: x64dbg(Windows) 또는 GDB+pwndbg(Linux)로 의심 지점에 브레이크포인트, 언패킹·복호화 결과 덤프.

•    자동화: 반복 작업은 PyGhidra/idalib/Binary Ninja API로 스크립트화. 경량 처리는 Capstone + LIEF.

•    심화: 특정 조건 입력 탐색은 angr 심볼릭 실행, 에뮬레이션은 Unicorn.

Ghidra는 무료이면서도 상용 도구에 근접한 디컴파일러, 폭넓은 프로세서 지원, 강력한 headless 자동화를 갖춰 대부분의 조직에서 기본 분석 플랫폼으로 삼기에 충분합니다. 단, Java 기반의 무게와 UI 학습 비용, Jython→PyGhidra 전환기에 따른 스크립트 호환성 문제를 고려해야 합니다.

Capstone은 완성된 분석 도구가 아니라 '부품'입니다. 직접 도구를 만들거나 다른 시스템에 디스어셈블 기능을 넣을 때 가장 무난한 선택이며, 포맷 파서(LIEF 등)와 결합해 사용합니다. x86 정확도가 특히 중요하면 Zydis·iced-x86을, 다중 아키텍처가 중요하면 Capstone을 고르는 것이 일반적입니다. 6.0 정식판 출시 전까지는 5.0.x 안정판 사용을 권장합니다.

예산이 있고 분석 품질·속도가 최우선이면 IDA Pro, 자동화·연구 중심이면 Binary Ninja가 강점이 있으며, 동적 분석은 플랫폼에 따라 x64dbg 또는 GDB를 함께 쓰는 구성이 실무에서 가장 많이 쓰입니다.

문서에 수록한 템플릿 중 다음 항목은 Linux(x86-64, Python 3.13) 환경에서 직접 실행해 동작을 확인했습니다. 테스트 대상은 gcc로 빌드한 ELF 바이너리와 Windows x64 PE 실행 파일입니다.

템플릿 검증 결과 비고
Capstone Python ①②, C API ③ 실행 확인 capstone 5.0.x, LIEF 1.0.0 — ELF·PE 모두
pefile 실행 확인 섹션·엔트로피·임포트 출력
iced-x86 실행 확인 iced-x86 1.21.0
angr 실행 확인 angr 10.0.4.post1 (CFG에서 main/add 함수 인식)
GDB Python, objdump 실행 확인 브레이크포인트 콜백·디스어셈블 출력
PyGhidra API 시그니처 확인 pyghidra 3.1.0 패키지 소스·문서로 확인(Ghidra 본체 미설치 환경)
Ghidra Java, IDA, Binary Ninja, r2/rizin, x64dbg, Zydis 미실행 공식 API·문서 기준으로 작성. 해당 도구 설치 환경에서 경로·버전에 맞게 조정 필요

•    Ghidra GitHub 릴리스 — https://github.com/NationalSecurityAgency/ghidra/releases

•    Ghidra 12.1 What's New — https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Configurations/Public_Release/src/global/docs/WhatsNew.md

•    PyGhidra (PyPI) — https://pypi.org/project/pyghidra/

•    Capstone 릴리스 이력 — https://releasealert.dev/github/capstone-engine/capstone

•    Capstone v6 Release Guide — https://github.com/capstone-engine/capstone/blob/next/docs/cs_v6_release_guide.md

•    Hex-Rays 가격 정책 — https://hex-rays.com/pricing

•    IDA 9.3 출시 공지 — https://community.hex-rays.com/t/release-ida-9-3-is-live/671

•    IDA 9.4 베타 공지 — https://hex-rays.com/blog/ida-9.4-beta-is-now-available

•    Binary Ninja 구매/에디션 — https://binary.ninja/purchase/

•    Binary Ninja 6.0 가격 변경 — https://binary.ninja/2026/07/28/pricing-changes.html

•    Binary Ninja 공지(6.0 Krypton) — https://binary.ninja/tag/announcements/

•    radare2 6.2.0 릴리스 — https://newreleases.io/project/github/radareorg/radare2/release/6.2.0

•    Rizin 2025 Summary — https://rizin.re/posts/year-2025-summary/

•    x64dbg 릴리스 — https://github.com/x64dbg/x64dbg/releases

•    angr (PyPI) — https://pypi.org/project/angr/

•    LIEF (PyPI) — https://pypi.org/project/lief/

•    iced-x86 (PyPI) — https://pypi.org/project/iced-x86/

•    Zydis — https://github.com/zyantific/zydis

 

'Reversing' 카테고리의 다른 글

압축 파일 암호 찾기  (0) 2024.12.11
소스코드 라인수 측정 프로그램  (2) 2023.01.05
실행파일 역공학(바이너리 분석) 도구 소개  (1) 2021.06.14
IDA pro Python 관련  (0) 2021.03.23
Posted by 휘프노스
,