symgraph/GhidrAssistMCP

An native MCP server extension for Ghidra

GhidrAssistMCP – Ghidra용 AI 지원 브리지

개요

GhidrAssistMCP는 Ghidra 애플리케이션 내부에서 Model Context Protocol (MCP) 서버를 실행하는 Ghidra 확장 프로그램입니다. 이 서버는 Ghidra의 리버스 엔지니어링 기능(함수 나열, 디스어셈블리 가져오기, 주석 편집, 분석 실행 등)을 AI 어시스턴트나 다른 자동화 도구가 호출할 수 있는 깔끔한 HTTP 기반 API로 노출합니다.

AI/ML에 중요한 이유

  • 표준화된 API – MCP를 사용함으로써 외부 LLM 기반 어시스턴트(예: 동반 GhidrAssist 클라이언트)는 Java 코드를 포함할 필요 없이 Ghidra에 질문하고 구조화된 JSON 응답을 받을 수 있습니다.
  • 도구 카탈로그 – 입력 스키마와 읽기/쓰기 주석이 포함된 100개의 명시적 "도구"가 정의되어 있어, LLM이 사용 가능한 작업과 호출 방법을 쉽게 파악할 수 있습니다.
  • 비동기 및 캐싱 – 오래 걸리는 분석은 백그라운드 작업으로 실행되고 결과는 캐시되어, LLM이 반복적으로 쿼리를 개선할 때 유용합니다.
  • 멀티 프로그램 및 헤드리스 지원 – 서버는 GUI와 Ghidra의 analyzeHeadless 모드 모두에서 작동하므로, AI 파이프라인이 많은 바이너리에 대해 완전 자동화된 분석을 실행할 수 있습니다.

핵심 기능(README에 설명된 대로)

기능 설명
MCP 서버 통합 공식 MCP Java SDK(v2.0.1)를 구현하며, Server-Sent Events(SSE)와 스트리밍 가능한 JSON 엔드포인트라는 두 가지 HTTP 전송을 제공합니다.
명시적 도구 카탈로그 프로젝트 관리, 프로그램 검사, 디스어셈블리, 디컴파일, 주석, 타입, 분석 옵션 등을 다루는 100개의 명명된 도구(기본적으로 93개 활성화)를 포함합니다.
리소스 템플릿 및 프롬프트 프로그램 메타데이터, 함수, 문자열, 가져오기/내보내기, 세그먼트에 대한 사전 정의된 MCP 리소스와 일반적인 RE 작업을 위한 7개의 준비된 분석 프롬프트를 제공합니다.
결과 캐싱 및 비동기 작업 반복 쿼리는 캐시를 사용하며, 오래 걸리는 작업은 폴링하거나 취소할 수 있는 작업 ID를 반환합니다.
멀티 프로그램 및 포커스 인식 여러 열린 프로그램을 처리하고, 포커스가 있는 프로그램 창을 자동으로 사용하며, 클라이언트가 program_name을 지정할 수 있게 합니다.
공유 런타임 및 UI 하나의 서버 인스턴스는 Ghidra 프로젝트 관리자가 소유하며, 모든 CodeBrowser 창은 구성과 로그를 공유하는 뷰를 얻습니다.
헤드리스 모드 analyzeHeadless에서 시작할 수 있어 AI 파이프라인이 GUI 없이 Ghidra와 상호작용할 수 있습니다.
구성 가능한 UI Ghidra 창(Window → GhidrAssistMCP)에서 도구를 활성화/비활성화하고, 호스트/포트를 변경하며, 실시간 요청/응답 로그를 볼 수 있습니다.

사용 방법

  1. 설치 – Ghidra에서 파일 → 확장 프로그램 설치를 통해 확장 프로그램(ZIP)을 설치합니다(Ghidra 12.0/12.1 및 Java 25+ 필요).
  2. Ghidra 시작 – 프로젝트 관리자가 열리면 MCP 서버가 자동으로 시작됩니다.
  3. 구성 – 필요 시 호스트/포트를 구성하고 원하는 도구를 활성화합니다.
  4. 도구 호출 – MCP 호환 클라이언트(예: 동반 GhidrAssist UI 또는 사용자 정의 스크립트)에서 도구를 호출합니다:
    {"method":"tools/call","params":{"name":"list_functions","arguments":{"program_name":"/binaries/example"}}}
    
    서버는 함수 목록을 JSON으로 응답합니다.
  5. 헤드리스 실행 – 서버를 시작하는 사전 스크립트와 함께 Ghidra의 analyzeHeadless 러너를 사용한 다음, 외부 AI 서비스가 엔드포인트(/mcp 또는 /sse)를 쿼리하도록 합니다.

누가 혜택을 받을 수 있나요?

  • 보안 연구자 – LLM 기반 바이너리 분석 어시스턴트를 구축하는 연구자.
  • 자동화 파이프라인 – Ghidra의 Java API를 포함하지 않고 프로그램 수준 정보(함수, CFG, 디컴파일)가 필요한 파이프라인.
  • 교육 도구 – 학생들이 LLM 기반 웹 UI를 통해 리버스 엔지니어링을 탐구할 수 있게 하는 도구.

제한 사항 및 고려 사항(문서에서)

  • 서버는 단일 포트(기본 8080)에서 실행되며, 포트가 비어 있어야 합니다.
  • 일부 강력한 작업(import_file, export_program, 스크립트 실행)은 안전을 위해 기본적으로 비활성화되어 있습니다.
  • 이 확장 프로그램은 MCP Java SDK 2.0.1에 의존합니다. 최신 MCP 개정판에는 SDK 업데이트가 필요할 수 있습니다.
  • 헤드리스 모드에서 서버는 JVM이 실행되는 동안에만 유지되며, completion_file을 사용하여 깨끗하게 종료할 수 있습니다.

위의 모든 정보는 저장소의 README에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.

SUMMARY: GhidrAssistMCP는 Ghidra 확장 프로그램으로, HTTP/SSE를 통해 100개의 리버스 엔지니어링 도구(디스어셈블리, 디컴파일, 분석 등)를 노출하는 Model Context Protocol(MCP) 서버를 실행합니다. 이를 통해 AI 어시스턴트나 자동화 스크립트가 표준화된 JSON API를 사용하여 GUI와 헤드리스 모드 모두에서 Ghidra를 쿼리하고 제어할 수 있습니다.

TITLE: Ghidra를 프로그래밍 가능한 분석 서비스로 바꾸는 AI 지원 MCP 서버

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트