이 Ghidra 튜토리얼에서 배울 내용
기본 흐름은 프로젝트 생성, 파일 가져오기, 아키텍처 확인, 자동 분석, 함수 찾기, 어셈블리와 의사 코드 비교입니다.
이 튜토리얼은 정적 분석에 집중합니다. 직접 만든 바이너리, 오픈 소스 샘플, 학습용 크랙미 또는 검사 권한이 있는 연습 프로그램을 사용하고 대상 파일을 실행할 필요는 없습니다.
- 기본 흐름은 프로젝트 생성, 파일 가져오기, 아키텍처 확인, 자동 분석, 함수 찾기, 어셈블리와 의사 코드 비교입니다.
- 허가된 파일을 정적으로 분석하고 실습 중에는 대상 파일을 실행하지 마세요.
- CodeBrowser + Listing + Decompiler
- XRefs + Function Graph
안전한 실습 환경 준비
직접 만든 프로그램, 오픈 소스 예제, 허가된 교육용 과제를 사용하세요. 알 수 없는 파일은 격리된 가상 머신에서 다루고 실행하지 않습니다.
첫 실습으로 비밀번호 문자열을 확인하는 작은 C 프로그램을 직접 컴파일하거나 학습용으로 만든 합법적인 크랙미를 선택하세요. 분석 전에 해시를 계산하고 원본을 보관합니다.
직접 만든 프로그램, 오픈 소스 예제, 허가된 교육용 과제를 사용하세요. 알 수 없는 파일은 격리된 가상 머신에서 다루고 실행하지 않습니다.
프로젝트 생성, 가져오기, 자동 분석
비공유 프로젝트를 만들고 형식, 프로세서, 엔디언, 컴파일러 설정을 확인한 뒤 Auto Analysis를 실행합니다.
감지된 형식, 프로세서, 언어, 엔디언과 컴파일러 사양을 확인하세요. 일반적인 PE와 ELF는 기본값으로 진행되는 경우가 많지만 raw 펌웨어와 드문 아키텍처는 수동 확인이 필요합니다.
- 1
프로젝트
비공유 프로젝트를 만들고 형식, 프로세서, 엔디언, 컴파일러 설정을 확인한 뒤 Auto Analysis를 실행합니다.
- 2
가져오기
형식, 프로세서, 언어, 엔디언과 컴파일러를 확인하고 raw 펌웨어와 드문 아키텍처는 수동으로 확인합니다.
- 3
분석
비공유 프로젝트를 만들고 형식, 프로세서, 엔디언, 컴파일러 설정을 확인한 뒤 Auto Analysis를 실행합니다.

코드 브라우저, 목록, 심볼 이해
Listing은 주소, 바이트, 명령어를 보여 주고 Decompiler는 고수준 해석을 제공합니다. Symbol Tree, 문자열, 검색을 함께 사용합니다.
알아보기 쉬운 문자열에서 시작해 참조를 확인하고 호출 함수로 이동하세요. 진입점부터 모든 명령어를 훑는 것보다 보통 더 빠릅니다.
| 창 | 용도 | 작업 |
|---|---|---|
| Listing | 명령어 | 확인 |
| Decompiler | 의사 코드 | 해석 |
| Symbol Tree | 심볼 | 이동 |
| Defined Strings | 문자열 | 단서 찾기 |
Ghidra 디컴파일러 올바르게 사용
의사 코드는 이해를 빠르게 하지만 중요한 결론은 Listing에서 확인해야 합니다. 근거에 따라 함수명, 변수명, 자료형, 주석을 개선하세요.
근거가 생길 때 함수와 변수 이름을 바꾸고 자료형, 구조체와 주석을 추가하세요. 수정할 때마다 다음 분석에 더 많은 맥락이 제공됩니다.
- 1
단서 찾기
의사 코드는 이해를 빠르게 하지만 중요한 결론은 Listing에서 확인해야 합니다. 근거에 따라 함수명, 변수명, 자료형, 주석을 개선하세요.
- 2
참조 추적
근거에 따라 이름과 자료형을 정한 뒤 구조체와 주석을 추가해 맥락을 보강합니다.
- 3
근거 확인
의사 코드는 이해를 빠르게 하지만 중요한 결론은 Listing에서 확인해야 합니다. 근거에 따라 함수명, 변수명, 자료형, 주석을 개선하세요.

교차 참조와 함수 그래프 추적
XRefs로 사용 위치, 호출자, 대상을 확인하고 Function Graph로 분기, 반복문, 대체 경로를 시각화합니다.
Function Graph는 기본 블록과 분기를 시각적인 제어 흐름 지도로 보여 줍니다. 중첩 조건과 반복문을 살펴본 뒤 Decompiler로 돌아가 각 경로를 설명하세요.

30분 첫 리버스 엔지니어링 실습
성공과 실패 문자열을 찾고 참조를 따라가며 결정 함수를 식별한 뒤 핵심 조건을 근거와 함께 설명합니다.
중요한 분기에 북마크를 추가하고 프로젝트를 저장하세요. 목표는 원본 소스를 완벽히 복원하는 것이 아니라 문자열, 참조, 함수, 조건과 결론을 잇는 재현 가능한 근거를 남기는 것입니다.
- 0-5
- 5-12
- 12-22
- 22-30
초보자가 자주 하는 실수
의사 코드를 원본 소스로 믿지 말고, 아키텍처를 확인하고, 분석 완료를 기다리며, 알 수 없는 파일을 실행하지 마세요.
모든 분석기를 켜거나 알 수 없는 바이너리를 실행하거나 추정한 자료형을 사실처럼 다루지 마세요. 명령어와 참조가 이상하면 올바른 아키텍처로 다시 가져옵니다.
| 문제 | 위험 | 개선 방법 |
|---|---|---|
| 의사 코드 | 잘못된 추론 | 확인 |
| 아키텍처 | 잘못된 해석 | 다시 가져오기 |
| 알 수 없는 파일 | 보안 위험 | 격리 환경 |
다음 단계와 공식 자료
작고 합법적인 예제로 같은 흐름을 반복한 다음 공식 문서와 PyGhidra 가이드로 자동화를 학습하세요. GhidraDocs.
이미지는 NSA Ghidra 공식 저장소 자료입니다. 2026년 8월 22일 확인한 최신 버전은 2026년 8월 18일 공개된 Ghidra 12.1.3입니다. Ghidra 디컴파일러 가이드로 학습을 이어 가거나 PyGhidra로 반복 작업을 자동화하세요.
Ghidra 사용법 FAQ
Ghidra는 안전한가요?
공식 GitHub 릴리스에서 내려받고 알 수 없는 파일은 격리 환경에서 실행하지 말고 분석하세요.
초보자는 디버거부터 써야 하나요?
먼저 정적 분석으로 함수, 참조, 제어 흐름 탐색을 익히세요.
원본 소스 코드를 완전히 복원하나요?
아닙니다. 디컴파일러는 유용한 해석을 만들지만 정확한 원본 소스는 아닙니다.
Ghidra 업데이트 방법은?
새 공식 버전을 별도 폴더에 풀고 확장 기능 호환성을 확인하세요.
어떤 파일을 분석할 수 있나요?
직접 만든 파일, 허가된 파일, 오픈 소스, 교육용 파일만 분석하세요.