Ghidra MCP 서버 – AI 기반 리버스 엔지니어링을 위한 110개 도구 제공
(github.com/bethington)- Ghidra MCP Server는 Ghidra의 리버스 엔지니어링 기능을 AI 및 자동화 프레임워크와 연결하는 Model Context Protocol(MCP) 서버
- 110개의 MCP 도구와 132개 엔드포인트를 통해 함수 분석, 데이터 구조 탐색, 문자열 추출 등 광범위한 바이너리 분석 기능 제공
- 배치 처리, 원자적 트랜잭션, 실시간 분석을 지원하며, Docker 배포 및 헤드리스 모드로 운영 가능
- Cross-binary 문서 전이 기능을 통해 서로 다른 바이너리 버전 간 함수 문서화를 자동 매칭
- AI 기반 리버스 엔지니어링 워크플로우를 프로덕션 수준의 안정성으로 구현할 수 있는 플랫폼
개요
- Ghidra MCP Server는 Ghidra의 분석 엔진을 AI 도구 및 자동화 시스템과 연결하는 프로덕션급 MCP 서버
- Model Context Protocol을 완전 구현하여 AI 모델과의 상호작용을 지원
- Ghidra의 기능을 HTTP REST 및 MCP 프로토콜(stdio/SSE)로 노출
주요 기능
-
Core MCP 통합
- MCP 완전 호환, 110개 MCP 도구 제공, 배치 연산 및 원자적 트랜잭션 지원
- Ghidra의 분석 엔진과 실시간 통합
-
바이너리 분석
- 함수 디컴파일, 호출 그래프, 교차 참조, 데이터 구조 자동 생성
- 문자열 추출, 심볼 테이블 분석, 메모리 매핑, Cross-binary 문서 전이 기능 포함
-
개발 및 자동화
- 빌드-테스트-배포-검증 자동화 파이프라인
- Ghidra 스크립트 생성·실행·관리, 다중 프로그램 비교, 대량 이름 변경 및 주석 처리
설치 및 실행
- 필수 구성요소: Java 21 LTS, Apache Maven 3.9+, Ghidra 12.0.2, Python 3.8+
-
설치 절차
- 저장소 클론 후 Python 의존성 설치
- Ghidra 라이브러리 14개 복사 후 Maven으로 빌드
- Ghidra 확장 폴더에 플러그인 배포
-
실행 방식
- Stdio 전송(기본, AI 도구용) 또는 SSE 전송(Web/HTTP 클라이언트용) 선택
- Ghidra 내에서 Tools > GhidraMCP > Start MCP Server 실행
성능 및 안정성
- 110개 MCP 도구 완전 구현, 대부분의 연산에서 1초 미만 응답 속도
- API 호출 93% 감소를 달성하는 배치 연산 구조
- 모든 연산은 원자적 트랜잭션으로 처리되어 신뢰성 확보
- 버전 인식 자동 배포 스크립트 제공
API 구성
- 핵심 연산: 연결 확인, 메타데이터 조회, 버전 정보, 엔트리 포인트 탐색
- 함수 분석: 함수 목록, 이름 검색, 디컴파일, 호출 관계 그래프, 문서 완성도 평가
- 메모리 및 데이터: 세그먼트 목록, 디스어셈블, 교차 참조, 메모리 내용 검사
- Cross-binary 문서화: 함수 해시 생성, 문서 내보내기/적용, 해시 기반 매칭
- 데이터 타입 관리: 구조체·열거형 생성, 필드 수정, 중복 타입 병합
- 심볼 및 라벨 관리: 임포트/익스포트 목록, 문자열 분석, 네임스페이스 및 전역 변수 관리
- 이름 변경 및 주석 처리: 함수·데이터·변수 이름 변경, 대량 주석 설정
- 타입 시스템: 함수 프로토타입 지정, 변수 타입 설정, 호출 규약 조회
- Ghidra 스크립트 관리: 스크립트 목록, 실행, 저장, 수정, 삭제
- 다중 프로그램 지원: 열린 프로그램 전환, 프로젝트 파일 목록, 문서 비교
- 분석 도구: 정의되지 않은 함수 탐색, 문자열 기반 검색, 바이트 패턴 탐색
아키텍처
-
AI/Automation 도구 ↔ MCP Bridge ↔ Ghidra Plugin 구조
-
bridge_mcp_ghidra.py: MCP 프로토콜을 HTTP 호출로 변환하는 Python 서버 -
GhidraMCP.jar: Ghidra 기능을 HTTP로 노출하는 Java 플러그인 -
ghidra_scripts/: 70개 이상의 자동화 스크립트 포함
-
개발 및 빌드
- Maven 기반 빌드 및 PowerShell 배포 스크립트 제공
- 프로젝트 구조는 Python 서버, Java 플러그인, Ghidra 라이브러리, 문서, 예제, 빌드 스크립트로 구성
- 필수 라이브러리 14개(약 37MB) 를 Ghidra 설치 경로에서 복사 필요
- 자동 배포, 배치 연산, 원자적 트랜잭션, 상세 로깅 기능 포함
문서 및 AI 워크플로우
- docs/ 폴더에 전체 문서, 프로젝트 구조, 명명 규칙, 헝가리안 표기법 포함
- AI 워크플로우 프롬프트: 함수 문서화, 버전 간 매칭, 빠른 시작 프롬프트 제공
- 릴리스 기록: CHANGELOG.md 및 docs/releases에 버전별 상세 내역 수록
라이선스 및 상태
- Apache License 2.0 적용
- 버전 2.0.0, 110개 MCP 도구 완전 구현, 70개 이상 Ghidra 스크립트 포함
- 프로덕션 환경 배포 준비 완료, AI 기반 리버스 엔지니어링에 적합
관련 프로젝트
- re-universe: PostgreSQL 기반 대규모 바이너리 유사성 분석 플랫폼
- cheat-engine-server-python: 동적 메모리 분석 및 디버깅용 MCP 서버
감사
- Ghidra 팀, Model Context Protocol 개발진, 커뮤니티 기여자들에게 감사 표시
Hacker News 의견들
-
여러 버전의 소프트웨어를 리버스 엔지니어링하는 과정이 너무 고통스러워서 이 프로젝트를 만들었음
핵심은 정규화된 함수 해싱 시스템으로, 함수의 논리적 구조(명령어, 피연산자, 제어 흐름)를 기준으로 해시를 생성함
덕분에 바이너리가 리빌드되거나 리베이스되어도 동일한 함수는 동일한 해시를 가지며, 모든 주석과 타입, 이름이 자동으로 이전됨
Ghidra용 MCP 브리지로 110개의 도구를 포함하며, Claude, Claude Code, 또는 다른 MCP 클라이언트와 통합 가능함
Diablo II의 여러 패치 버전으로 검증했고, 1,300개 이상의 함수 주석을 자동으로 이전할 수 있었음
Docker 기반의 headless 모드로 CI 통합도 가능함
v2.0.0에서는 로컬호스트 전용 바인딩, 타임아웃 설정, 라벨 삭제, .env 설정 등을 추가했음
해싱 접근법이나 MCP 설계에 대해 논의 환영임- Ghidra의 기본 FunctionID나 BinDiff 플러그인과 비교했을 때 어떤 점이 다른지 궁금함
-
ReVa와 비교하면 어떤지 궁금함
설치 가이드가 불완전한 것 같음. Ghidra에서 설치 후 재시작했는데 Tools 메뉴에 GhidraMCP가 보이지 않음 - 직접 사용해보려 했는데 Ghidra에서 플러그인을 인식하지 못함
GH Discussions가 소통 채널로 맞는지 궁금함 - 다른 Ghidra MCP 서버들(pyghidra-mcp, ReVa, GhidrAssistMCP 등)과의 차이가 궁금함
- Android 바이너리 디컴파일 지원 여부가 궁금함
-
LaurieWired의 Ghidra MCP 서버를 사용해봤는데, 바이너리 분석과 키젠 생성이 너무 재미있고 간단했음
이번 MCP 서버도 꼭 써볼 예정임- 예전에 만든 소프트웨어가 더 이상 존재하지 않는 서버로 인증을 요청해서 설치가 불가능했는데, 직접 Ghidra MCP를 만들어보려다 실패했음
이런 타이밍에 이 프로젝트가 올라와서 신기함 - 이 브랜치는 LaurieWired/GhidraMCP의 main보다 110 커밋 앞서 있음
- 예전에 만든 소프트웨어가 더 이상 존재하지 않는 서버로 인증을 요청해서 설치가 불가능했는데, 직접 Ghidra MCP를 만들어보려다 실패했음
-
회사 동료가 Claude와 함께 Ghidra를 써서 River Ride 게임을 해킹한 걸 보고 나도 시도해봤음
PowerPC용 옛 게임을 Apple Silicon으로 포팅했는데, 여러 MCP를 써봤지만 Claude Code는 코드를 자주 날조했음
결국 Cursor + GPT 5.2 Codex의 headless 모드로 가장 좋은 결과를 얻었음- 나도 리버스 엔지니어링을 실험 중인데, GPT-5.2 Codex가 Claude보다 훨씬 뛰어남
예를 들어 1,300줄짜리 C64-SID 파일을 30분 만에 완전 복원함
현재 C64 게임 전체를 역공학하는 멀티 에이전트 시스템을 만들고 있음
예시 코드 참고
- 나도 리버스 엔지니어링을 실험 중인데, GPT-5.2 Codex가 Claude보다 훨씬 뛰어남
-
AI를 이용한 리버스 엔지니어링은 과소평가되고 있음
나는 Android 앱에서 암호화 키 추출에 성공했는데, 키가 셰이더 안에 숨겨져 있었고 실제로 셰이더를 실행해야 얻을 수 있었음- 친구와 함께 오래된 Unity 게임을 Claude에 주었더니, 완전한 TypeScript 포트를 만들어줬음
지금은 브라우저에서 멀티플레이 기능을 추가 중임 - 셰이더에서 키를 추출했다는 게 흥미로움. 구체적인 방법을 더 들을 수 있을지 궁금함
- 나도 MCP와 여러 도구를 연결해 바이너리에서 소스 코드 복원과 취약점 탐지를 시도했는데, 실제 소스와 거의 일치했음
- 친구와 함께 오래된 Unity 게임을 Claude에 주었더니, 완전한 TypeScript 포트를 만들어줬음
-
LaurieWired의 15개 도구 버전을 몇 달째 사용 중인데, 앱 내부 구조가 완전히 투명하게 보이는 느낌임
버그 추적, 플러그인 제작, 앱 수정까지 가능함
Objective-C 코드에는 Hopper Disassembler도 함께 사용함
관련 논문: Full recompilation with LLMs and Ghidra- 앱 리버스 엔지니어링을 OSS와 동일시하는 건 GitHub 직원으로서 좋은 인상은 아님
-
LLM을 이용한 리버스 엔지니어링은 정말 과소평가됨
30년 된 게임을 복원 중인데, Ghidra 디컴파일 결과와 심볼 정보를 RAG 방식으로 모델에 주면 놀라운 결과가 나옴
Gemini 3 Flash 같은 저가 모델도 충분히 쓸 만함- 하지만 Gemini는 종종 불완전한 의사코드를 생성함
함수의 일부를 생략하거나 switch 블록 내부를 주석으로만 남김
반면 Claude Opus나 Qwen3-30B-A3B는 훨씬 완성도 높은 코드를 냄
Gemini의 큰 컨텍스트 창이 장점이지만, PCode의 장황함 때문에 실제로는 제약이 많음
- 하지만 Gemini는 종종 불완전한 의사코드를 생성함
-
MCP에 너무 많은 도구를 연결하면 성능이 떨어진다고 생각했는데, 이건 좋은 설계로 보이지 않음
- 요즘은 lazy loading으로 MCP 도구 문제를 어느 정도 해결함
다만 여전히 API 변환 중심의 도구들은 LLM과의 호환성이 떨어짐 - vibecoded 기반의 스킬형 도구가 훨씬 효율적일 것 같음
- 요즘은 lazy loading으로 MCP 도구 문제를 어느 정도 해결함
-
리버스 엔지니어는 아니지만, Claude Code와 Ghidra MCP를 이용해 랜섬웨어 복호화기를 개선했음
수 테라바이트의 데이터를 복구했을 때 정말 초능력을 얻은 기분이었음- “그 초능력으로 암호화기도 더 신뢰성 있게 만들 수 있었던 거 아님?”이라는 농담을 들었음
-
AI가 바이너리 분석에서 초인적 능력을 발휘할 수 있다고 생각함
지금은 생산성이 낮고 지루한 작업이지만, AI 덕분에 보안 감사나 공급망 공격 방어에도 활용될 수 있음- 맞음, 게다가 AI가 자기 자신을 분석하는 것도 가능함
MOOLLM의 “skill-snitch”는 다른 스킬의 동작을 감시하고, “cursor-mirror”는 Cursor 내부 상태를 완전히 들여다봄
이런 스킬들은 서로 조합과 재귀 호출이 가능해 MCP보다 훨씬 빠른 “speed of light” 방식으로 작동함
관련 자료: Leela MOOLLM Demo Transcript, speed-of-light skill, skill-snitch report
- 맞음, 게다가 AI가 자기 자신을 분석하는 것도 가능함
-
왜 CLI 기반으로 만들지 않았는지 궁금함. 요즘 LLM과 에이전트들은 CLI를 더 잘 다루는 것 같음
- CLI가 학습 데이터에 포함된 경우에만 그렇다고 생각함. 새로운 도구라면 어차피 문서를 전부 컨텍스트에 넣어야 함
- 이 프로젝트는 MCP가 컨텍스트를 과도하게 차지하기 전에 시작된 것임 (LaurieWired/GhidraMCP)
- 최근 Claude Code 같은 도구는 툴 검색 기반 로딩을 지원해서 MCP의 컨텍스트 부하가 많이 줄었음
- 나도 비슷한 생각임. 110개의 도구 설명이 항상 컨텍스트에 들어가면 노이즈만 늘어남