NSA가 직접 풀어 버린 리버스 엔지니어링 도구, 설치부터 첫 분석까지
실행 파일만 덩그러니 남았을 때 내부 로직을 읽을 수 있는 코드 수준으로 되돌려주는 Ghidra는 NSA가 직접 개발해 공개한 프레임워크입니다. 디컴파일·디스어셈블·함수 호출 그래프·스크립트 자동화를 한 화면에서 처리하고 윈도우·맥·리눅스 어디서든 돌아갑니다. 이 자료는 JDK 25 필수 조건부터 깨끗한 폴더 설치 요령, 파이썬 연동법, 메모리 권장 사양까지 실무자가 바로 쓸 수 있게 정리합니다.
깃허브 스타 7.9만을 찍은 Ghidra는 미국 국가안보국(NSA)이 7년 6개월 전(2019년 3월) 처음 만들어 올해 9월까지 업데이트 중인 오픈소스 리버스 엔지니어링 프레임워크입니다. 실행 파일만 있을 때 사람이 읽을 수 있는 코드 비슷하게 풀어주는 디컴파일러부터 함수 호출 그래프, 스크립트 자동화까지 한 판에 해결합니다.
Ghidra, 무엇인가요
미국 국가안보국(NSA) 연구국이 직접 개발·공개한 소프트웨어 리버스 엔지니어링 프레임워크 Ghidra는 깃허브 저장소 NationalSecurityAgency/ghidra에서 Apache-2.0 라이선스로 배포된다. 처음 만들어진 시점: 7년 6개월 전(2019년 3월), 마지막 업데이트: 이번 달(2026년 9월) 기준으로 스타 79,576개, 포크 8,852개를 기록 중이며 주 언어는 Java다.
실행 환경·설치 요약
공식 멀티플랫폼 릴리스를 쓰려면 JDK 25 64비트가 반드시 설치돼 있어야 한다. 릴리스 페이지에서 ghidra_ _ _ .zip(Assets 드롭다운)만 받아 깨끗한 폴더에 압축을 풀고, ./ghidraRun(윈도우 ghidraRun.bat)로 실행하면 된다. 파이썬 연동이 필요하면 ./support/pyghidraRun을 쓰면 된다. 기존 설치 위에 덮어쓰면 설정·캐시가 꼬이니 반드시 새 폴더에 풀자.
./ghidraRun
# 또는 PyGhidra
./support/pyghidraRunJDK 25 64비트 설치
Oracle·Eclipse Temurin 등 배포판 중 64비트 25 버전 선택
릴리스 ZIP 다운로드
GitHub Releases → Assets → ghidra_ _ _ .zip
새 폴더에 압축 해제
기존 설치 폴더와 겹치지 않게 별도 디렉터리 생성 후 unzip
실행
리눅스/맥
./ghidraRun, 윈도우ghidraRun.bat
| 항목 | 값 |
|---|---|
| 저장소 | NationalSecurityAgency/ghidra |
| 라이선스 | Apache-2.0 |
| 스타 | 79,576 |
| 포크 | 8,852 |
| 주 언어 | Java |
| 주제 태그 | disassembler, reverse-engineering, software-analysis |
| 필수 런타임 | JDK 25 64-bit |
| 실행 명령 | ./ghidraRun / ./support/pyghidraRun |
| 권장 메모리 | 16 GB 이상 |
NSA가 사이버보안 임무 수행 중 맞닥뜨린 대규모·협업 분석 난제를 풀기 위해 만든 도구인 만큼, 악성코드 심층 분석부터 취약점 리서치까지 실무 현장에서 바로 쓸 수 있는 완성도를 갖췄다. 자바·파이썬 확장 생태계까지 열려 있어 팀 단위 워크플로 자동화도 어렵지 않다.
설치·실행 5단계
Ghidra를 처음 켜기 전에는 JDK 25 64비트가 설치돼 있어야 합니다. 저장소의 릴리스 페이지에서 ghidra_ _ _ .zip 형태의 공식 멀티 플랫폼 배포 파일을 내려받으세요. 'Source Code'라고 적힌 파일은 설치용이 아니니 주의하세요.
1. JDK 25 64비트 설치
운영체제에 맞는 JDK 25 64비트 패키지를 설치하고,
java -version으로 버전을 확인하세요.2. 릴리스 ZIP 다운로드
깃허브 저장소의 Releases → Assets에서
ghidra_ _ _ .zip파일을 내려받습니다.3. 새 폴더에 압축 해제
빈 디렉터리를 하나 만들고 그곳에 ZIP 내용을 풉니다. 기존 설치 폴더와 겹치지 않게 하세요.
4. 실행 스크립트 실행
리눅스/맥에서는
./ghidraRun, 윈도우에서는ghidraRun.bat를 실행합니다. 파이썬 환경이 필요하다면./support/pyghidraRun(윈도우support\pyghidraRun.bat)을 쓰세요.5. 최초 프로젝트 생성
시작 화면에서 'New Project' → 'Non-Shared Project'를 선택하고 저장 위치와 이름을 정한 뒤 'Finish'를 누르면 분석 준비가 끝납니다.
실행 후 메모리 사용량이 꽤 크기 때문에 8 GB 램 환경에서는 대용량 바이너리를 열 때 버벅거릴 수 있습니다. 쾌적한 분석을 위해 16 GB 이상을 권장합니다.
./ghidraRun./support/pyghidraRun| 단계 | 명령어 (리눅스/맥) | 명령어 (윈도우) |
|---|---|---|
| GUI 실행 | ./ghidraRun | ghidraRun.bat |
| PyGhidra 실행 | ./support/pyghidraRun | support\pyghidraRun.bat |
자주 묻는 질문 — 설치가 안 될 때 확인할 것
JDK 25 64비트가 정확히 깔렸는지, JAVA_HOME 환경 변수가 올바른지 확인하세요. 압축을 기존 폴더에 풀지 않았는지, 실행 스크립트에 실행 권한(chmod +x ghidraRun)이 있는지도 점검하세요.
한눈에 보는 핵심 기능표
Ghidra는 디스어셈블·디컴파일·그래프 시각화·스크립트 자동화를 한 화면에서 처리하는 리버스 엔지니어링 프레임워크입니다. 윈도우·맥·리눅스 어디서든 똑같이 돌고, 자바와 파이썬으로 플러그인이나 스크립트를 자유롭게 얹을 수 있습니다. 수백 가지 프로세서 명령어 세트와 실행 파일 포맷을 기본 지원하며, 대화형 모드와 배치 모드를 오가며 대용량 분석도 소화합니다.
| 핵심 기능 | 지원 범위 |
|---|---|
| 디스어셈블 / 어셈블 | 전체 프로세서 아키텍처 내장 |
| 디컴파일 | C 계열 유사 코드 자동 생성 |
| 그래프 | 함수 호출·제어 흐름·데이터 의존 그래프 |
| 스크립트·플러그인 | 자바 / 파이썬(Jython) 양쪽 지원 |
| 실행 플랫폼 | Windows · macOS · Linux |
| 확장 구조 | Extension Component · Script Manager 로 동적 로드 |
메모리 여유가 분석 속도를 가릅니다. 8 GB 램으로는 대용량 펌웨어나 말웨어 샘플을 열 때 버벅이기 쉬우니, 실무라면 16 GB 이상을 권장합니다. Apache-2.0 라이선스라 상업·비상업 구분 없이 자유롭게 쓰고 고쳐 배포할 수 있습니다.
주의할 점
Ghidra를 처음 쓸 때 가장 많이 겪는 실수는 기존 설치 폴더 위에 새 버전을 그대로 풀어버리는 것입니다. README에도 "Do not extract on top of an existing installation"이라고 명시돼 있는데, 이렇게 하면 설정 파일·확장 플러그인·프로젝트 메타데이터가 뒤섞여 실행 오류나 분석 결과 손상으로 이어집니다. 반드시 빈 디렉터리를 하나 만들고 거기서 압축을 푸는 습관을 들이세요.
# ghidraRun 또는 ghidraRun.bat 열어서
# DEFAULT_VM_OPTS="-Xms256m -Xmx4g" ← 이 줄을 찾아
DEFAULT_VM_OPTS="-Xms256m -Xmx10g" # 16 GB 램이라면 10 GB 정도로 상향JDK 버전 불일치·파이썬 연동·대용량 바이너리 대응 요약
| 함정 | 증상 | 대응 |
|---|---|---|
| JDK 25 64-bit가 아닌 버전 사용 | 실행 시 UnsupportedClassVersionError 또는 즉시 종료 | 공식 권장 JDK 25 64-bit만 설치·경로 확인 |
PyGhidra(./support/pyghidraRun) 실행 안 됨 | 파이썬 환경 미구성 또는 버전 불일치 | 가상환경에서 pip install pyghidra 후 동일 JDK에서 실행 |
| 프로젝트 저장 경로에 한글·공백 포함 | 저장·불러오기 실패 | 영문·숫자·언더스코어만 쓰는 짧은 경로 사용 |
정리: 다음에 할 일
Ghidra를 처음 실행해 보고 나면, 공식 Getting Started 문서를 정독하며 메뉴 구조와 프로젝트 관리 방식을 익히는 게 가장 빠른 길입니다. 설치 폴더 루트에 들어 있는 GettingStarted.html을 브라우저로 열면 GUI 기초부터 헤드리스(Headless) 분석 스크립트 작성법까지 단계별로 정리돼 있습니다.
파이썬 생태계를 선호한다면 PyGhidra 튜토리얼을 따라 해 보세요. ./support/pyghidraRun으로 Jupyter 노트북을 띄운 뒤, 공식 예제 노트북(ghidra_snippets.ipynb 등)을 복사해 실행하면 디컴파일 결과를 판다스 데이터프레임으로 바로 받아 후처리할 수 있습니다.
1. Getting Started 문서 열기
설치 디렉터리의
GettingStarted.html을 브라우저로 열어 GUI·프로젝트·헤드리스 모드 기초 학습2. PyGhidra 노트북 실행
./support/pyghidraRun실행 → Jupyter에서 공식 예제 노트북 열기 → 디컴파일 결과 파이썬 객체로 다루기 실습3. 커뮤니티 스크립트 적용
awesome-ghidra저장소 클론 →scripts폴더 복사 → Script Manager에서 원하는 스크립트 실행
| 자원 | 위치 | 용도 |
|---|---|---|
| Getting Started 가이드 | 설치 폴더 루트 / 공식 문서 사이트 | GUI·헤드리스·스크립팅 입문 |
| PyGhidra 튜토리얼 | ./support/pyghidraRun → Jupyter | 파이썬 자동화·데이터 분석 연계 |
| 커뮤니티 스크립트 모음 | GitHub ghidra-scripts 토픽 / awesome-ghidra | 난독화 해제·시그니처 매칭·취약점 패턴 등 실전 스크립트 |
- 기존 설치 폴더 위에 새 버전을 덮어쓰지 말고, 매번 깨끗한 디렉터리에 압축 해제하기
- 대용량 바이너리 분석 시 힙 메모리(
-Xmx)를 8 GB 이상으로 늘려 실행하기 - 스크립트 작성 전
ghidra.repl콘솔에서 API 동작을 먼저 확인하기