Ghidra: 바이너리 탐색과 주석 작성
바이너리를 가져오고 디스어셈블리와 디컴파일된 코드를 탐색하며 변수를 이름 변경하고 주석을 추가합니다.
Ghidra: 바이너리 탐색과 주석 작성은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
Ghidra란?
Ghidra는 NSA가 개발하고 2019년에 공개한 무료 오픈 소스 리버스 엔지니어링 도구입니다. Linux, macOS, Windows에서 디스어셈블리, 디컴파일, 스크립팅, 협업 분석을 지원합니다.
바이너리 불러오기
Ghidra에서 바이너리 열기:
- 새 프로젝트 만들기
- 파일 가져오기(File → 파일 가져오기)
- 자동 분석 실행 — 완료될 때까지 기다리기(함수, 문자열, 데이터 형식 인식)
- 디스어셈블리와 디컴파일러 보기를 표시하는 CodeBrowser 열기
Ghidra 인터페이스
Ghidra의 주요 창:
- 프로그램 트리 — 섹션(.text, .data, .plt)
- 기호 트리 — 함수, 레이블, 가져오기, 내보내기
- 목록 — 디스어셈블리 보기
- 디컴파일러 — 의사 C 재구성
- 함수 — 식별된 모든 함수 목록
진입점으로 이동하기
프로그램 진입점 또는 main()에서 분석을 시작합니다:
G를 눌러 주소나 기호로 "이동"합니다- 기호 트리에서 "main"을 검색합니다
- 함수를 두 번 클릭해 해당 함수로 이동합니다
디컴파일러 출력 읽기
Ghidra의 디컴파일러는 어셈블리보다 읽기 쉬운 의사 C를 생성합니다. 결과가 완벽하지는 않습니다 — 변수 이름이 일반적이고(param_1, local_10), 제어 흐름이 이상하게 보일 수도 있습니다 — 하지만 코드가 수행하는 작업을 이해할 수 있을 만큼 논리를 명확하게 보여 줍니다.
변수 및 함수 이름 바꾸기
주석을 추가하면 가독성이 향상됩니다:
- 변수를 마우스 오른쪽 버튼으로 클릭 → 이름 바꾸기(또는
L누르기) - 함수를 마우스 오른쪽 버튼으로 클릭 → 함수 이름 바꾸기
;(줄 끝) 또는/*...*/스타일로 주석 추가
바이너리를 더 많이 이해할수록 이름을 바꾸면서 맥락이 쌓입니다.
문자열 식별하기
문자열은 프로그램의 목적을 이해하는 데 매우 중요합니다:
- 창 → 정의된 문자열에서 모든 문자열 상수를 표시합니다
- 문자열을 클릭해 코드에서 해당 문자열이 사용되는 위치로 이동합니다
- 오류 메시지, 파일 경로, URL, 레지스트리 키를 통해 기능을 파악할 수 있습니다
교차 참조(XREF)
교차 참조는 함수나 변수가 호출되거나 사용되는 위치를 보여 줍니다. 기호에서 X를 누르면 모든 참조를 확인할 수 있습니다. 이는 사용자 입력이 함수로 들어오는 위치나 보안 검사가 수행되는 위치를 찾는 데 매우 중요합니다.
Ghidra로 스크립팅하기
Ghidra에는 Python/Java 스크립팅 API가 있습니다:
# Python script to find all calls to strcpy:
from ghidra.program.model.symbol import RefType
for ref in currentProgram.getReferenceManager().getReferencesTo(toAddr(0x401234)):
print(ref.getFromAddress())Ghidra로 악성 코드 분석하기
악성 코드를 분석할 때:
- 분석 방해 기법 식별(디버깅 방해, 코드 난독화)
- 네트워크 통신 함수 찾기(소켓, 연결, WinInet)
- 암호 함수 찾기(AES S-box 상수 검색: 0x63, 0x7c...)
- 복호화된 문자열에서 C2 URL 추출
Ghidra와 IDA Pro 비교
Ghidra와 IDA Pro 비교:
- Ghidra: 무료, 오픈 소스, 스크립팅 가능, 우수한 디컴파일러
- IDA Pro: 업계 표준, 더 빠른 분석, 더 우수한 플러그인 생태계, 고가($$$)
- 대부분의 작업에서 Ghidra로 충분히 수행할 수 있으며, 전문 악성 코드 분석 연구실에는 IDA가 적합합니다
빠른 확인: Ghidra
특정 함수나 변수를 호출하거나 참조하는 바이너리 내 모든 위치를 보여 주는 Ghidra 기능은 무엇인가요?
강의 요약
Ghidra는 디스어셈블리, 디컴파일, 스크립팅을 지원하는 NSA 개발 무료 RE 도구입니다. 주요 작업 흐름은 바이너리 불러오기, 자동 분석 실행, main()으로 이동, 디컴파일러로 논리 확인, 변수 이름 바꾸기, XREF로 데이터 흐름 추적, 문자열 검색으로 맥락 파악하기입니다. 주석을 추가하면 이해가 단계적으로 깊어집니다. 스크립팅으로 반복적인 분석 작업을 자동화할 수 있습니다.
자주 묻는 질문
“Ghidra: 바이너리 탐색과 주석 작성” 강의는 무료인가요?
네 — “Ghidra: 바이너리 탐색과 주석 작성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Ghidra: 바이너리 탐색과 주석 작성”에서 뭘 배우나요?
바이너리를 가져오고 디스어셈블리와 디컴파일된 코드를 탐색하며 변수를 이름 변경하고 주석을 추가합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Ghidra: 바이너리 탐색과 주석 작성” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Ghidra: 바이너리 탐색과 주석 작성
- 리버스 엔지니어링을 위한 x86/x64 어셈블리 핵심
- GDB와 pwndbg를 사용한 동적 분석
- 난독화 해제와 분석 방해 기법