GhidrAssistMCP
Расширение Ghidra с MCP-сервером: агент читает псевдокод и дизассемблер, строит графы вызовов и правит имена, типы и структуры через 100 инструментов
- 780 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Агент переименовывает, меняет типы и структуры, создает, сохраняет и закрывает проекты Ghidra, поэтому может испортить результаты долгого разбора
- Сервер принимает подключения по HTTP на порту 8080, и любой клиент с доступом к порту получает все включенные инструменты
- Опциональные инструменты импорта файлов и запуска скриптов открывают чтение файлов за пределами проекта и выполнение кода
Установка
- Работает в
Ручная установка
./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-сервер к дизассемблеру Ghidra: сотни инструментов для обратной разработки, декомпиляция, переименование, работа со структурами, эмуляция и отладка
MCP-сервер для Ghidra: агент декомпилирует, переименовывает переменные, строит перекрестные ссылки и разбирает бинарные файлы через набор мелких инструментов
Нативный MCP-плагин для отладчика x64dbg: агент управляет отладкой по HTTP, ставит точки останова, шагает по коду, читает и патчит память
Официальный MCP-сервер Hex-Rays: агент открывает базы IDA, выполняет в них Python и разбирает бинарники. Плагины есть для Claude Code и Codex
x64dbg MCP
x64dbg MCP Server Plugin
Плагин отладчика x64dbg и x32dbg с MCP-сервером на 79 инструментов и 11 командами Claude Code для разбора сбоев, трассировки и дампа памяти
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| 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.