# Ghidra MCP 서버 – AI 기반 리버스 엔지니어링을 위한 110개 도구 제공

> Clean Markdown view of GeekNews topic #26428. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26428](https://news.hada.io/topic?id=26428)
- GeekNews Markdown: [https://news.hada.io/topic/26428.md](https://news.hada.io/topic/26428.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-02-06T03:34:48+09:00
- Updated: 2026-02-06T03:34:48+09:00
- Original source: [github.com/bethington](https://github.com/bethington/ghidra-mcp)
- Points: 1
- Comments: 1

## Topic Body

- **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 개발진, 커뮤니티 기여자들에게 감사 표시

## Comments



### Comment 50683

- Author: neo
- Created: 2026-02-06T03:34:48+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46882389) 
- 여러 버전의 소프트웨어를 리버스 엔지니어링하는 과정이 너무 고통스러워서 이 프로젝트를 만들었음  
  핵심은 **정규화된 함수 해싱 시스템**으로, 함수의 논리적 구조(명령어, 피연산자, 제어 흐름)를 기준으로 해시를 생성함  
  덕분에 바이너리가 리빌드되거나 리베이스되어도 동일한 함수는 동일한 해시를 가지며, 모든 주석과 타입, 이름이 자동으로 이전됨  
  Ghidra용 MCP 브리지로 110개의 도구를 포함하며, **Claude**, Claude Code, 또는 다른 MCP 클라이언트와 통합 가능함  
  Diablo II의 여러 패치 버전으로 검증했고, 1,300개 이상의 함수 주석을 자동으로 이전할 수 있었음  
  Docker 기반의 **headless 모드**로 CI 통합도 가능함  
  v2.0.0에서는 로컬호스트 전용 바인딩, 타임아웃 설정, 라벨 삭제, .env 설정 등을 추가했음  
  해싱 접근법이나 MCP 설계에 대해 논의 환영임
  - Ghidra의 기본 FunctionID나 [BinDiff](https://github.com/google/bindiff) 플러그인과 비교했을 때 어떤 점이 다른지 궁금함
  - [ReVa](https://github.com/cyberkaida/reverse-engineering-assistant)와 비교하면 어떤지 궁금함  
    설치 가이드가 불완전한 것 같음. Ghidra에서 설치 후 재시작했는데 Tools 메뉴에 GhidraMCP가 보이지 않음
  - 직접 사용해보려 했는데 Ghidra에서 플러그인을 인식하지 못함  
    GH Discussions가 소통 채널로 맞는지 궁금함
  - 다른 Ghidra MCP 서버들(pyghidra-mcp, ReVa, GhidrAssistMCP 등)과의 차이가 궁금함
  - Android 바이너리 **디컴파일 지원** 여부가 궁금함

- LaurieWired의 Ghidra MCP 서버를 사용해봤는데, 바이너리 분석과 키젠 생성이 너무 **재미있고 간단**했음  
  이번 MCP 서버도 꼭 써볼 예정임
  - 예전에 만든 소프트웨어가 더 이상 존재하지 않는 서버로 인증을 요청해서 설치가 불가능했는데, 직접 Ghidra MCP를 만들어보려다 실패했음  
    이런 타이밍에 이 프로젝트가 올라와서 신기함
  - 이 브랜치는 LaurieWired/GhidraMCP의 main보다 **110 커밋 앞서 있음**

- 회사 동료가 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 게임 전체를 역공학하는 **멀티 에이전트 시스템**을 만들고 있음  
    [예시 코드](https://gist.github.com/s-macke/595982d46d6699b69e1f0e051e7bd451) 참고

- AI를 이용한 리버스 엔지니어링은 과소평가되고 있음  
  나는 Android 앱에서 **암호화 키 추출**에 성공했는데, 키가 셰이더 안에 숨겨져 있었고 실제로 셰이더를 실행해야 얻을 수 있었음  
  - 친구와 함께 오래된 Unity 게임을 Claude에 주었더니, 완전한 **TypeScript 포트**를 만들어줬음  
    지금은 브라우저에서 멀티플레이 기능을 추가 중임  
  - 셰이더에서 키를 추출했다는 게 흥미로움. 구체적인 방법을 더 들을 수 있을지 궁금함  
  - 나도 MCP와 여러 도구를 연결해 바이너리에서 **소스 코드 복원**과 취약점 탐지를 시도했는데, 실제 소스와 거의 일치했음

- LaurieWired의 15개 도구 버전을 몇 달째 사용 중인데, 앱 내부 구조가 완전히 **투명하게 보이는 느낌**임  
  버그 추적, 플러그인 제작, 앱 수정까지 가능함  
  Objective-C 코드에는 Hopper Disassembler도 함께 사용함  
  관련 논문: [Full recompilation with LLMs and Ghidra](https://dl.acm.org/doi/10.1145/3728958)
  - 앱 리버스 엔지니어링을 OSS와 동일시하는 건 GitHub 직원으로서 좋은 인상은 아님

- LLM을 이용한 리버스 엔지니어링은 정말 과소평가됨  
  30년 된 게임을 복원 중인데, Ghidra 디컴파일 결과와 심볼 정보를 **RAG 방식**으로 모델에 주면 놀라운 결과가 나옴  
  Gemini 3 Flash 같은 저가 모델도 충분히 쓸 만함  
  - 하지만 Gemini는 종종 **불완전한 의사코드**를 생성함  
    함수의 일부를 생략하거나 switch 블록 내부를 주석으로만 남김  
    반면 Claude Opus나 Qwen3-30B-A3B는 훨씬 완성도 높은 코드를 냄  
    Gemini의 큰 컨텍스트 창이 장점이지만, PCode의 **장황함** 때문에 실제로는 제약이 많음

- MCP에 너무 많은 도구를 연결하면 성능이 떨어진다고 생각했는데, 이건 **좋은 설계로 보이지 않음**  
  - 요즘은 **lazy loading**으로 MCP 도구 문제를 어느 정도 해결함  
    다만 여전히 API 변환 중심의 도구들은 LLM과의 호환성이 떨어짐  
  - vibecoded 기반의 **스킬형 도구**가 훨씬 효율적일 것 같음

- 리버스 엔지니어는 아니지만, Claude Code와 Ghidra MCP를 이용해 **랜섬웨어 복호화기**를 개선했음  
  수 테라바이트의 데이터를 복구했을 때 정말 초능력을 얻은 기분이었음  
  - “그 초능력으로 암호화기도 더 신뢰성 있게 만들 수 있었던 거 아님?”이라는 농담을 들었음

- AI가 **바이너리 분석**에서 초인적 능력을 발휘할 수 있다고 생각함  
  지금은 생산성이 낮고 지루한 작업이지만, AI 덕분에 보안 감사나 공급망 공격 방어에도 활용될 수 있음  
  - 맞음, 게다가 AI가 **자기 자신을 분석**하는 것도 가능함  
    MOOLLM의 “skill-snitch”는 다른 스킬의 동작을 감시하고, “cursor-mirror”는 Cursor 내부 상태를 완전히 들여다봄  
    이런 스킬들은 서로 **조합과 재귀 호출**이 가능해 MCP보다 훨씬 빠른 “speed of light” 방식으로 작동함  
    관련 자료: [Leela MOOLLM Demo Transcript](https://github.com/SimHacker/moollm/blob/main/designs/LEELA-MOOLLM-DEMO-TRANSCRIPT.md), [speed-of-light skill](https://github.com/SimHacker/moollm/tree/main/skills/speed-of-light), [skill-snitch report](https://github.com/SimHacker/moollm/blob/main/skills/skill-snitch/skill-snitch-report.md)

- 왜 **CLI 기반**으로 만들지 않았는지 궁금함. 요즘 LLM과 에이전트들은 CLI를 더 잘 다루는 것 같음  
  - CLI가 학습 데이터에 포함된 경우에만 그렇다고 생각함. 새로운 도구라면 어차피 문서를 전부 컨텍스트에 넣어야 함  
  - 이 프로젝트는 MCP가 **컨텍스트를 과도하게 차지하기 전**에 시작된 것임 ([LaurieWired/GhidraMCP](https://github.com/LaurieWired/GhidraMCP))  
  - 최근 Claude Code 같은 도구는 **툴 검색 기반 로딩**을 지원해서 MCP의 컨텍스트 부하가 많이 줄었음  
  - 나도 비슷한 생각임. 110개의 도구 설명이 항상 컨텍스트에 들어가면 **노이즈**만 늘어남
