🔬 Ghidra 실무 스터디 가이드

데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약

#reverse-engineering #nsa #open-source 📅 2026.03 v11.2

1. Ghidra란?

Ghidra는 미국 국가안보국(NSA)이 개발한 오픈소스 역공학 프레임워크입니다. 바이너리 분석, 디컴파일, 디스어셈블, 스크립팅을 하나의 통합 환경에서 제공하며, 대규모 멀웨어 분석, 취약점 연구, 포렌식에 널리 사용됩니다.

🔍 디스어셈블 & 디컴파일

실시간 디컴파일러가 바이너리를 고수준 C 유사 코드로 변환. 수동 분석 시간을 대폭 단축.

🧩 확장형 스크립팅

Python, Java, C++ API 지원. Ghidra Script Manager로 자동화, 플러그인 개발 용이.

🧠 협업 & 데이터 관리

프로젝트 기반 멀티유저 협업, 서버 모드 제공. 대규모 팀 분석에 최적.

2. 왜 써야 하는가?

IDA Pro, Radare2, Binary Ninja 등 다양한 도구와의 비교를 통해 Ghidra의 실무 우위를 확인합니다.

기능 Ghidra (NSA) IDA Pro Radare2
가격 무료 (오픈소스) 💰 고가 (1,500$~) 무료
디컴파일러 품질 매우 우수 (C-like) 매우 우수 중간 (실험적)
스크립팅 Python, Java, C++ Python (IDAPython) Python, r2pipe
협업 내장 서버 지원 ❌ 미지원 ❌ 미지원
플랫폼 Windows, macOS, Linux Windows, macOS, Linux Cross-platform
💡 결론: 비용 부담 없이 프로 수준의 디컴파일과 확장성을 원한다면 Ghidra가 최선의 선택입니다. 특히 AI/데이터 엔지니어에게 Python 스크립팅과 대규모 배치 분석이 강력합니다.

3. 핵심 개념

Ghidra 내부 아키텍처와 데이터 흐름을 이해하는 것이 실무 적응의 첫걸음입니다.

+-------------------------------------------------------------------+ | Ghidra Architecture | +-------------------------------------------------------------------+ | [User Interface] ←→ [Project Manager] ←→ [Server (optional)] | | | | | v | | [Listing & Decompiler Views] | | | | | v | | [Program Database] -- [Sleigh (processor spec)] | | | | | | v v | | [Analyzer Engine] [Decompiler (PCode → C)] | | | | | v | | [Script Manager (Python/Java/C++)] → [Custom Analysis] | +-------------------------------------------------------------------+
⚠️ 주의: PCode는 Ghidra의 중간 표현(IR)입니다. 디컴파일러를 개선하거나 커스텀 아키텍처를 추가하려면 Sleigh와 PCode 개념을 반드시 숙지하세요.

4. 퀵스타트

설치부터 첫 번째 Python 스크립트 실행까지 10분이면 충분합니다.

4.1 설치 (Linux / macOS / WSL)

# 1. JDK 17+ 설치 (권장: Azul Zulu 또는 OpenJDK)
sudo apt install openjdk-17-jdk  # Ubuntu/Debian
# macOS: brew install --cask zulu17

# 2. Ghidra 다운로드 (공식 GitHub)
wget https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_11.2_build/ghidra_11.2_PUBLIC_20250315.zip

# 3. 압축 해제
unzip ghidra_11.2_PUBLIC_20250315.zip -d ~/tools/
export GHIDRA_HOME=~/tools/ghidra_11.2_PUBLIC

# 4. 실행 (GUI)
./ghidraRun

4.2 Headless 분석 (CLI 우선)

# 분석 전용 스크립트 실행 (Python 예제)
$GHIDRA_HOME/support/analyzeHeadless /tmp/ghidra_proj MyProject \
    -import sample.exe \
    -postScript HelloGhidra.py \
    -deleteProject

4.3 첫 Python 스크립트 (HelloGhidra.py)

# HelloGhidra.py - Ghidra Python API 사용 예제
# @category: Tutorial
# @runtime: Python

from ghidra.app.script import GhidraScript
from ghidra.program.model.listing import CodeUnit

def get_function_names():
    """모든 함수 이름을 출력합니다."""
    fm = currentProgram.getFunctionManager()
    for func in fm.getFunctions(True):
        print(f"[+] {func.getName()} @ {func.getEntryPoint()}")

if __name__ == "__main__":
    print("=" * 50)
    print(f"Analyzing: {currentProgram.getName()}")
    print(f"Language:  {currentProgram.getLanguageID()}")
    print("=" * 50)
    get_function_names()

스크립트 실행: Script Manager → Run 또는 CLI analyzeHeadless -postScript

🔧 팁: Headless 모드는 CI/CD 파이프라인에 통합하기 좋습니다. analyzeHeadless 명령어에 -import, -process, -postScript 플래그를 조합해 대량의 바이너리를 자동 분석할 수 있습니다.

5. 핵심 설정 레퍼런스

자주 사용되는 설정 항목과 권장값을 표로 정리했습니다.

설정 (Edit → Tool Options) 권장값 설명
Decompiler → Default Decompiler Decompiler (default) 고급 최적화 활성화
Decompiler → Parallel Decompile Enable (쓰레드 수: CPU 코어-1) 멀티코어 활용 속도 향상
Listing → Display → Show Hex true 16진수 미리보기
Script Manager → Python Interpreter jython-standalone (내장) 외부 CPython 사용 시 ghidra_bridge
Memory → Max Allocation (JVM) -Xmx8G (8GB 이상 권장) 대형 바이너리 분석 시 필요
⚠️ 메모리: -Xmx 값은 호스트 메모리의 70~80%를 넘지 않도록 설정하세요. ghidra.bat 또는 ghidraRun 스크립트에서 MAXMEM 변수를 수정합니다.

6. 실무 팁 & 트러블슈팅

현업에서 자주 마주치는 문제와 그 해결책을 모았습니다.

6.1 자주 겪는 문제

문제 원인 해결책
Java 버전 불일치 JDK 11 이하 또는 잘못된 JRE JDK 17+ 설치, JAVA_HOME 환경변수 설정
분석 중 OutOfMemory 힙 메모리 부족 ghidraRun에서 -Xmx8G 이상 할당
Python 스크립트 import 오류 Jython은 일부 라이브러리 미지원 ghidra_bridge로 외부 CPython 연결
디컴파일 코드 품질 낮음 최적화 정보 부족 / 난독화 분석 옵션에서 "Aggressive Instruction Finder" 활성화

6.2 실무 꿀팁

🧠 AI 엔지니어 관점: Ghidra의 FlatProgramAPI를 활용해 함수 CFG, 문자열, 상수 특징을 추출하면 머신러닝 기반 악성코드 분류 모델 학습에 바로 사용할 수 있습니다.

7. 참고 자료

공식 문서와 커뮤니티 리소스입니다.

📌 주의: Ghidra는 정기적으로 업데이트되므로 항상 최신 릴리스 노트를 확인하세요. 2026년 3월 기준 v11.2가 안정 버전입니다.