GhidrAssistMCP

Расширение Ghidra с MCP-сервером: агент читает псевдокод и дизассемблер, строит графы вызовов и правит имена, типы и структуры через 100 инструментов

  • 780 ★ репозитория
  • Последний коммит
  • MIT
MCP-сервер

Широкий доступ

Почему такой уровень

  • Агент переименовывает, меняет типы и структуры, создает, сохраняет и закрывает проекты Ghidra, поэтому может испортить результаты долгого разбора
  • Сервер принимает подключения по HTTP на порту 8080, и любой клиент с доступом к порту получает все включенные инструменты
  • Опциональные инструменты импорта файлов и запуска скриптов открывают чтение файлов за пределами проекта и выполнение кода
Все причины и проверки

symgraph/ghidrassistmcp

Установка

Работает в

Ручная установка

./gradlew installExtension

Сборка из исходников: нужна Java 25 или новее, переменная GHIDRA_INSTALL_DIR или параметр -PGHIDRA_INSTALL_DIR=<путь>, Ghidra должна быть закрыта. Команда копирует архив в Extensions/Ghidra и распаковывает его в пользовательскую папку расширений.

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Агент переименовывает, меняет типы и структуры, создает, сохраняет и закрывает проекты Ghidra, поэтому может испортить результаты долгого разбора
  • Сервер принимает подключения по HTTP на порту 8080, и любой клиент с доступом к порту получает все включенные инструменты
  • Опциональные инструменты импорта файлов и запуска скриптов открывают чтение файлов за пределами проекта и выполнение кода

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

GhidrAssistMCP устанавливается как расширение в Ghidra и запускает внутри нее MCP-сервер. Сервер стартует вместе с менеджером проектов, раньше, чем откроется CodeBrowser, и один обслуживает все открытые окна. По умолчанию он слушает localhost:8080 и принимает подключения по Streamable HTTP (адрес /mcp) и по SSE (адреса /sse и /message). Агент получает 100 именованных инструментов, по умолчанию включены 93: список функций и поиск по ним, псевдокод, дизассемблер, P-code, граф потока управления, импорты, экспорты, строки, блоки памяти, шестнадцатеричный дамп, перекрестные ссылки, вызывающие и вызываемые функции. Кроме чтения, инструменты меняют проект: переименовывают локальные переменные, задают типы и прототипы функций, создают структуры и их поля, выводят структуру из переменной, ставят и удаляют комментарии, запускают и отменяют анализ программы. Отдельные инструменты создают, открывают, сохраняют и закрывают проекты Ghidra и открывают программу из проекта в CodeBrowser. Каждый ответ начинается с пометки о том, над какой программой идет работа и какое окно в фокусе, поэтому при нескольких открытых бинарниках агент выбирает цель по полю program_name. Длинные операции выполняются в фоне: сервер возвращает идентификатор задачи, статус смотрят через get_task_status, отмену дает cancel_task. Повторяющиеся запросы кэшируются. Вместе с инструментами сервер отдает шесть шаблонов ресурсов (сведения о программе, функции, строки, импорты, экспорты, сегменты) и семь готовых промптов, среди них разбор функции, поток данных, сетевые данные и сравнение. В окне Window, GhidrAssistMCP видны журнал запросов и ответов и настройки: порт, список инструментов с флажками, выключатель сервера. Без графического окна расширение запускается скриптом GAMCPStartServerScript.java через analyzeHeadless.

Для кого. Для специалистов по обратной разработке, исследователей безопасности и участников CTF, которые разбирают бинарные файлы в Ghidra и хотят, чтобы ИИ-агент через MCP-клиент работал с открытым проектом.

Подходит, если

  • Нужно, чтобы агент прочитал псевдокод незнакомой функции и объяснил ее по шагам, не копируя текст из Ghidra вручную
  • В бинарнике сотни безымянных функций, и агент должен предложить имена, типы и прототипы по псевдокоду и перекрестным ссылкам
  • Требуется восстановить структуры и классы по тому, как переменные используются в коде
  • Проекты надо открывать и сохранять из диалога с агентом, а анализ запускать и отменять без переключения в окно Ghidra
  • Анализ должен идти без графического окна, в сценарии на сервере или в изолированной лаборатории через analyzeHeadless

Не подходит, если

  • У вас другая версия Ghidra или Java: расширение собирают под Ghidra 12.0 или 12.1 и Java 25, архив привязан к версии Ghidra
  • Разбор ведется в IDA Pro: расширение работает только с Ghidra, для IDA в каталоге есть Hex-Rays IDA MCP
  • Нет права анализировать программу, которую вы собираетесь открыть: инструмент не проверяет, чей это бинарник и разрешен ли разбор
  • Нужны эмуляция кода и подключение к живому отладчику: в перечне инструментов их нет, такие возможности описаны у Ghidra MCP Server

Пример запроса к агенту

Открой в Ghidra функцию main, прочитай ее псевдокод и предложи имена для всех функций, которые она вызывает

MCP

Транспорт
http, sse
Авторизация
не нужна

Переменные окружения

GHIDRA_INSTALL_DIR
Путь к установленной Ghidra, нужен только при сборке из исходников

Ограничения

  • Лицензия MIT. Версия 3.0.0 переименовала и разделила инструменты прежнего набора, поэтому после обновления клиенту нужно заново запросить список инструментов, а сохраненные запросы со старыми именами не сработают.
  • Нужны Ghidra 12.0 или 12.1 и Java 25 или новее. Готовые архивы собирают отдельно для каждой версии Ghidra, сборка из исходников требует Gradle wrapper из репозитория и переменной GHIDRA_INSTALL_DIR.
  • Потоковый HTTP поддерживает протокол 2025-11-25, SSE остается на 2024-11-05. Последняя редакция протокола 2026-07-28 пока не поддержана полностью: автор ждет следующей большой версии Java SDK.
  • Инструменты импорта файла, экспорта программы и пять инструментов запуска скриптов выключены по умолчанию. Их включают флажками в окне настроек, и с этого момента сервер может принимать произвольные файлы и выполнять скрипты по запросу агента.
  • Расширение разбирает чужие программы, поэтому применять его можно только к бинарным файлам, на анализ которых у вас есть разрешение.
  • Закрытие проекта по умолчанию идет без сохранения, но сервер отказывается закрыть проект с несохраненными правками. Параметр discard_changes разрешает их потерять.

Как отключить. Выключите сервер переключателем в окне Window, GhidrAssistMCP. Чтобы убрать расширение совсем, откройте в Ghidra File, Install Extensions, снимите флажок у GhidrAssistMCP и перезапустите программу. После сборки из исходников удаляет расширение команда ./gradlew uninstallExtension, при закрытой Ghidra.

Частые вопросы

Что делает расширение, если открыт только менеджер проектов?

Сервер уже работает. Инструменты жизненного цикла создают проект по абсолютному пути родительской папки и простому имени без .gpr и .rep, открывают существующий по пути к файлу .gpr, сохраняют и закрывают его. Программу из проекта открывает open_program, и при необходимости запускается CodeBrowser. Открывать проект поверх уже открытого нельзя: сначала закройте активный.

Как выбрать нужный бинарник при нескольких программах в Ghidra?

Вызовите list_open_programs: он вернет пути внутри проекта, которыми различаются файлы с одинаковыми именами. Этот путь подставляют в program_name. Если цель не указана или названа неоднозначно, сервер вернет ошибку. Запросы про курсор всегда относятся к окну CodeBrowser в фокусе и отдельного выбора программы не принимают.

Как запустить расширение без окна Ghidra?

Через launcher analyzeHeadless с пред- или постскриптом GAMCPStartServerScript.java и параметрами host и port. Сервер работает внутри процесса analyzeHeadless и использует загруженную программу. Параметр wait=true держит процесс открытым для клиентов, а completion_file позволяет корректно закрыть сервер, создав указанный файл.

Что значит профиль agent_lab?

Это режим для одноразовых лабораторий статического анализа. Он разрешает экспорт программы внутри песочницы, а импорт по произвольному пути и скрипты Ghidra остаются выключенными: автор объясняет это тем, что они могут открыть секреты процесса или запустить другие процессы. Импортом артефактов управляет внешняя оболочка. Неизвестные профили сервер отклоняет.

Что показывает журнал в окне расширения?

Вкладка журнала записывает события сессии (запуск и остановка сервера, смена программы), каждый запрос в виде REQ с именем инструмента и параметрами, каждый ответ в виде RES, ошибки и попадания в кэш. Журнал общий для всех окон CodeBrowser, ограничен по размеру, а кнопка Clear Shared Log очищает его везде.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы

MCP-сервер и плагин для Ghidra: агент декомпилирует бинарники, смотрит перекрестные ссылки и переименовывает функции в открытом проекте

MCP-серверРасширенный доступ11,5 тыс.Звезды репозитория

MCP-сервер к дизассемблеру Ghidra: сотни инструментов для обратной разработки, декомпиляция, переименование, работа со структурами, эмуляция и отладка

MCP-серверШирокий доступ5,9 тыс.Звезды репозитория

MCP-сервер для Ghidra: агент декомпилирует, переименовывает переменные, строит перекрестные ссылки и разбирает бинарные файлы через набор мелких инструментов

MCP-серверШирокий доступ879Звезды репозитория

Нативный MCP-плагин для отладчика x64dbg: агент управляет отладкой по HTTP, ставит точки останова, шагает по коду, читает и патчит память

MCP-серверШирокий доступ2,6 тыс.Звезды репозитория
Официальный

Официальный MCP-сервер Hex-Rays: агент открывает базы IDA, выполняет в них Python и разбирает бинарники. Плагины есть для Claude Code и Codex

ПлагинШирокий доступ1,4 тыс.Звезды репозитория

x64dbg MCP

x64dbg MCP Server Plugin

Плагин отладчика x64dbg и x32dbg с MCP-сервером на 79 инструментов и 11 командами Claude Code для разбора сбоев, трассировки и дампа памяти

MCP-серверШирокий доступ534Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
GhidrAssistMCP (эта запись)нетне нужна780
GhidraMCPнетне нужна11 491плагин с мостом на Python, порт 8080, мелкий набор инструментов и безголовый режим через PyGhidra
Ghidra MCP Serverнетне нужна5 869больше двухсот инструментов, эмуляция кода и интеграция с живым отладчиком
ReVaнетAPI-ключ879много мелких инструментов, сравнение двух программ и маркетплейс скиллов Claude Code в репозитории

Коротко о README

В репозитории есть описание проекта с установкой из готового архива и сборкой из исходников, настройкой сервера и инструментов, запуском в безголовом режиме и таблицей инструментов по задачам. Отдельные разделы описывают общий для всех окон рабочий слой, поддержку версий протокола MCP, структуру исходников с примером нового инструмента, команды сборки Gradle, журналирование и частые неполадки. Подробный разбор перехода на версию 3.0.0 лежит в docs/modernization-review.md.

Бейдж для README

Сообщить о проблеме

Foxx AIGhidrAssistMCP
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.