AI Neo Lab
스킬

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/pyghidraRun
  1. JDK 25 64비트 설치

    Oracle·Eclipse Temurin 등 배포판 중 64비트 25 버전 선택

  2. 릴리스 ZIP 다운로드

    GitHub Releases → Assets → ghidra_ _ _ .zip

  3. 새 폴더에 압축 해제

    기존 설치 폴더와 겹치지 않게 별도 디렉터리 생성 후 unzip

  4. 실행

    리눅스/맥 ./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. 1. JDK 25 64비트 설치

    운영체제에 맞는 JDK 25 64비트 패키지를 설치하고, java -version으로 버전을 확인하세요.

  2. 2. 릴리스 ZIP 다운로드

    깃허브 저장소의 Releases → Assets에서 ghidra_ _ _ .zip 파일을 내려받습니다.

  3. 3. 새 폴더에 압축 해제

    빈 디렉터리를 하나 만들고 그곳에 ZIP 내용을 풉니다. 기존 설치 폴더와 겹치지 않게 하세요.

  4. 4. 실행 스크립트 실행

    리눅스/맥에서는 ./ghidraRun, 윈도우에서는 ghidraRun.bat를 실행합니다. 파이썬 환경이 필요하다면 ./support/pyghidraRun(윈도우 support\pyghidraRun.bat)을 쓰세요.

  5. 5. 최초 프로젝트 생성

    시작 화면에서 'New Project' → 'Non-Shared Project'를 선택하고 저장 위치와 이름을 정한 뒤 'Finish'를 누르면 분석 준비가 끝납니다.

실행 후 메모리 사용량이 꽤 크기 때문에 8 GB 램 환경에서는 대용량 바이너리를 열 때 버벅거릴 수 있습니다. 쾌적한 분석을 위해 16 GB 이상을 권장합니다.

터미널에서 실행 (리눅스/맥)
./ghidraRun
파이썬 연동 실행 (리눅스/맥)
./support/pyghidraRun
단계명령어 (리눅스/맥)명령어 (윈도우)
GUI 실행./ghidraRunghidraRun.bat
PyGhidra 실행./support/pyghidraRunsupport\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. 1. Getting Started 문서 열기

    설치 디렉터리의 GettingStarted.html을 브라우저로 열어 GUI·프로젝트·헤드리스 모드 기초 학습

  2. 2. PyGhidra 노트북 실행

    ./support/pyghidraRun 실행 → Jupyter에서 공식 예제 노트북 열기 → 디컴파일 결과 파이썬 객체로 다루기 실습

  3. 3. 커뮤니티 스크립트 적용

    awesome-ghidra 저장소 클론 → scripts 폴더 복사 → Script Manager에서 원하는 스크립트 실행

자원위치용도
Getting Started 가이드설치 폴더 루트 / 공식 문서 사이트GUI·헤드리스·스크립팅 입문
PyGhidra 튜토리얼./support/pyghidraRun → Jupyter파이썬 자동화·데이터 분석 연계
커뮤니티 스크립트 모음GitHub ghidra-scripts 토픽 / awesome-ghidra난독화 해제·시그니처 매칭·취약점 패턴 등 실전 스크립트
  • 기존 설치 폴더 위에 새 버전을 덮어쓰지 말고, 매번 깨끗한 디렉터리에 압축 해제하기
  • 대용량 바이너리 분석 시 힙 메모리(-Xmx)를 8 GB 이상으로 늘려 실행하기
  • 스크립트 작성 전 ghidra.repl 콘솔에서 API 동작을 먼저 확인하기

이런 글도 있어요