LaurieWired/GhidraMCP
MCP Server for Ghidra
GhidraMCP란?
GhidraMCP는 Model Context Protocol (MCP) 서버로, AI 어시스턴트(LLM)가 Ghidra(NSA의 오픈소스 리버스 엔지니어링 툴킷)를 사용하여 소프트웨어를 자율적으로 리버스 엔지니어링할 수 있게 합니다. LLM과 Ghidra의 강력한 바이너리 분석 기능 사이의 간극을 메웁니다.
작동 방식
두 부분으로 구성됩니다:
- Ghidra 플러그인 — Ghidra 내부에 설치되며, 작은 HTTP 서버(기본
http://127.0.0.1:8080/)를 실행하여 Ghidra의 분석 기능을 노출합니다. - Python MCP 서버 — 해당 HTTP 서버에 연결하고 MCP 요청(Claude Code 또는 VS Code와 같은 클라이언트에서)을 Ghidra 작업으로 변환합니다.
MCP 클라이언트(예: Claude Code)가 Python 서버를 시작하면 HTTP를 통해 Ghidra 플러그인과 통신합니다. LLM은 Ghidra에 함수 디컴파일, 메서드/클래스/임포트 나열, 심볼 이름 변경까지 요청할 수 있습니다. 모두 자율적으로 수행됩니다.
주요 기능
- 디컴파일 및 분석 Ghidra 내부의 바이너리 분석
- 자동 이름 변경 메서드 및 데이터(심볼 이름 변경)
- 메서드, 클래스, 임포트, 익스포트 나열
- 헤드리스 모드 — PyGhidra를 사용하여 Ghidra GUI 없이 작동하므로 바이너리를 자체적으로 가져오고 분석할 수 있습니다
- 클라이언트 무관 — 모든 MCP 클라이언트(VS Code, Claude Code 등)와 호환
기술 스택
- Ghidra 12.1.4 (리버스 엔지니어링 프레임워크)
- Python 3.10+ 및 MCP 서버용
uv/uvx - PyGhidra 헤드리스 작업용
- Java 21 + Gradle Ghidra 확장 프로그램 빌드용
- MCP (Model Context Protocol) LLM 통신용
왜 중요한가
리버스 엔지니어링은 전통적으로 느리고 수동적인 프로세스입니다. GhidraMCP는 LLM이 Ghidra를 직접 제어할 수 있게 하여 "이 함수는 무엇을 하나요?"와 같은 질문을 하고 디컴파일된 출력을 얻은 다음 심볼 이름을 변경하고 반복할 수 있습니다. 이는 AI 에이전트가 전문 도구(Ghidra)를 사용하여 복잡한 기술 작업을 자율적으로 수행하는 실용적인 예입니다.
사용 사례
- 악성코드 분석 및 취약점 연구
- 알 수 없는 바이너리 또는 펌웨어 이해
- 대규모 리버스 엔지니어링 프로젝트에서 심볼 이름 변경 및 코드 주석 자동화
- LLM이 Ghidra의 데이터를 쿼리하여 인간 분석가를 지원
제한 사항 (README에서)
- 특히 Ghidra 12.1.4가 필요합니다
- 헤드리스 모드에는 Python 3.10–3.13 및 Ghidra 확장 프로그램 설치가 필요합니다
- macOS에서는 헤드리스 사용 전에 Ghidra 디컴파일러를 수동으로 빌드해야 합니다
- MCP 서버와 Ghidra 플러그인은 서로를 가리키도록 설정해야 합니다(IP/포트 구성)
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트