GhidrAssist
Автор: Jason Tang
Расширенный плагин на основе LLM для интерактивной помощи в реверс-инжиниринге в Ghidra.
Описание
GhidrAssist интегрирует большие языковые модели (LLM) в Ghidra для обеспечения интеллектуальной помощи при исследовании бинарных файлов и реверс-инжиниринге. Он поддерживает любой API, совместимый с OpenAI v1, включая локальные модели (Ollama, LM-Studio, Open-WebUI) и облачных провайдеров (OpenAI, Anthropic, Azure).
Ключевые особенности
Основная функциональность:
- Объяснение кода — объяснение функций и инструкций как в дизассемблере, так и в декомпилированном псевдокоде C
- Панель анализа безопасности, показывающая уровень риска, профиль активности и использование API
- Редактируемые сводки с защитой от автоматической перезаписи пользовательских правок
- Интерактивный чат — многоэтапные диалоговые запросы с сохранением истории чата
- Пользовательские запросы — прямые запросы к LLM с опциональным контекстом текущей функции/местоположения
Система знаний Graph-RAG:
- Семантический граф знаний — иерархическое представление анализа бинарных файлов
- 5-уровневая семантическая иерархия: Statement → Block → Function → Module → Binary
- Предварительно вычисленные сводки LLM обеспечивают быстрые запросы без LLM
- Постоянное хранение в SQLite с алгоритмами графов JGraphT
- Полнотекстовый поиск (FTS5) по сводкам и аннотациям безопасности
- Обнаружение сообществ — автоматическое обнаружение модулей с помощью алгоритма Лейдена
- Группирует связанные функции в логические модули
- Иерархическая структура сообществ со сводками
- Визуальное исследование графа с настраиваемой глубиной
- Извлечение функций безопасности — всесторонний анализ безопасности
- Сетевые API: POSIX sockets, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
- API ввода/вывода файлов: POSIX, Windows, функции библиотеки C
- Крипто API: OpenSSL, Windows crypto, платформенно-зависимые
- Строковые шаблоны: IP-адреса, URL, домены, пути к файлам, ключи реестра
- Классификация уровня риска (LOW/MEDIUM/HIGH) и профилирование активности
- Вкладка семантического графа — визуальный интерфейс графа знаний
- Представление графа с исследованием глубины N-hop
- Представление списка всех индексированных функций
- Семантический поиск по сводкам
- Переиндексация и анализ безопасности в один клик
Расширенные возможности:
- Управление расширенным мышлением/рассуждением — настройка глубины рассуждения LLM для компромисса между качеством и скоростью
- Поддержка OpenAI o1/o3/o4, Claude с расширенным мышлением и локальных моделей рассуждения
- Настраиваемые уровни усилий: Low (быстрый), Medium (сбалансированный), High (тщательный)
- Сохранение для каждой программы — разные бинарные файлы могут использовать разные уровни рассуждения
- Независимая от провайдера реализация (Anthropic, OpenAI, Azure, LiteLLM, LMStudio, Ollama)
- Агентный режим ReAct — автономное исследование с использованием структурированного рассуждения (Think-Act-Observe)
- LLM предлагает шаги расследования на основе вашего запроса
- Систематическое выполнение инструментов с отслеживанием прогресса через списки дел
- Сохранение истории итераций, показывающей все шаги расследования
- Финальный синтез с полным ответом и ключевыми выводами
- Точные метрики (итерации, вызовы инструментов, продолжительность)
- Интеграция MCP — клиент протокола контекста модели для инструментального анализа
- Работает с GhidrAssistMCP для инструментов, специфичных для Ghidra
- Диалоговый вызов инструментов с автоматическим выполнением функций
- Поддержка транспорта SSE (Server-Sent Events)
- Вызов функций — LLM может автономно навигировать по бинарным файлам и изменять анализ
- Переименовывать функции и переменные
- Переходить к адресам и перекрестным ссылкам
- Выполнять команды Ghidra
- Вкладка действий — предложение и применение массовых улучшений анализа
- Обнаружение уязвимостей безопасности
- Анализ качества кода
- Автоматизированные предложения по рефакторингу
- RAG (Retrieval Augmented Generation) — улучшение запросов с помощью контекстных документов
- Добавление пользовательской документации, заметок об эксплойтах, ссылок на архитектуру
- Полнотекстовый поиск на основе Lucene
- Внедрение контекста в запросы
- Генерация набора данных RLHF — сбор обратной связи для тонкой настройки модели
Архитектура
Плагин использует модульную сервис-ориентированную архитектуру:
Основные сервисы:
- Режимы запросов: Обычные запросы, расширенные MCP или полное агентное исследование
- Оркестратор ReAct: Управляет автономными циклами исследования с отслеживанием задач и накоплением результатов
- Обработчик диалоговых инструментов: Управляет многоэтапными сеансами вызова инструментов
- MCPToolManager: Взаимодействует с внешними MCP-серверами для специализированных инструментов
Бэкенд Graph-RAG:
- BinaryKnowledgeGraph: Гибридное хранилище SQLite + JGraphT для семантических знаний
- GraphRAGEngine: Движок запросов без LLM, использующий предварительно вычисленные сводки
- SemanticExtractor: Суммирование функций на основе LLM с пакетной обработкой
- SecurityFeatureExtractor: Статический анализ для сетевых API, ввода-вывода файлов и крипто API
- CommunityDetector: Реализация алгоритма Лейдена для обнаружения модулей
Уровень данных:
- AnalysisDB: База данных SQLite для истории чата, обратной связи RLHF и графов знаний
- SchemaMigrationRunner: Версионные миграции базы данных для прозрачных обновлений
- RAGEngine: Поиск документов на основе Lucene для внедрения пользовательского контекста
Компоненты пользовательского интерфейса:
- Интерфейс на основе вкладок: Explain, Query, Actions, Semantic Graph, RAG Management, MCP Servers
- Оркестровка сервисов через TabController
План развития:
- Тонкая настройка модели с использованием собранного набора данных RLHF
- Дополнительные интеграции инструментов MCP
- Улучшенные агентные возможности, многоагентное сотрудничество
- Поиск по сходству на основе эмбеддингов
Скриншоты
Screenshot
https://github.com/user-attachments/assets/bd79474a-c82f-4083-b432-96625fef1387
Быстрый старт
- При необходимости скопируйте ZIP-архив бинарного релиза в каталог Ghidra_Install/Extensions/Ghidra.
- Запустите Ghidra -> File -> Install Extension -> Enable GhidrAssist.
- Загрузите бинарный файл и запустите CodeBrowser.
- CodeBrowser -> File -> Configure -> Miscellaneous -> Enable GhidrAssist.
- CodeBrowser -> Window -> GhidraAssistPlugin.
- Убедитесь, что пути к базам данных RLHF и RAG соответствуют вашему окружению.
- Укажите хост API вашему предпочтительному провайдеру API и установите ключ API.
- (Опционально) На вкладке Analysis Options установите уровень усилий рассуждения (None/Low/Medium/High) для моделей, поддерживающих расширенное мышление.
- Откройте GhidrAssist с помощью опции GhidrAssist в меню Windows и начинайте исследование.
Настройка LLM
GhidrAssist работает с любым API, совместимым с OpenAI v1. Детали настройки зависят от провайдера - вот некоторые полезные ресурсы:
Локальные провайдеры LLM:
- LM Studio - Простое локальное размещение моделей с графическим интерфейсом
- Ollama - Управление локальными моделями из командной строки
- Open-WebUI - Веб-интерфейс для локальных моделей
Облачные провайдеры:
Прокси LiteLLM (Многопровайдерный шлюз):
- LiteLLM - Единый API для более чем 100 провайдеров LLM
- Поддерживает AWS Bedrock, Google Vertex AI, Azure и многие другие
- Выберите "LiteLLM" в качестве типа провайдера в настройках GhidrAssist
- Автоматическое определение семейства моделей для правильного форматирования сообщений
Рекомендуемые модели
Для агентного режима (требует сильного мышления и использования инструментов):
- Cloud: GPT-5.1, Claude Sonnet 4.5
- Local: GPT-OSS, Llama 3.3 70B, DeepSeek-R1 70B, Qwen2.5 72B
Модели с поддержкой расширенного мышления/рассуждения:
- OpenAI: o1-preview, o1-mini, o3-mini, o4-mini, gpt-5 (используйте параметр
reasoning_effort)
- Anthropic: Claude Sonnet 4.5, Claude Opus 4.5, Claude Haiku 4.5, Claude Opus 4.1/4, Claude Sonnet 4 (используйте параметр
thinking.budget_tokens)
- Local: openai/gpt-oss-20b через Ollama/LMStudio (поддерживает уровни усилий)
Рекомендации по уровню усилий рассуждения:
- Low: Быстрый анализ, минимальные токены мышления (~5-10 с, низкая стоимость)
- Medium: Сбалансированная глубина рассуждения (~15-30 с, умеренная стоимость)
- High: Глубокий анализ безопасности (~30-60 с, стоимость x2, рекомендуется для поиска уязвимостей)
Примечание: Агентный режим требует моделей с сильными способностями к вызову функций и многошаговыми рассуждениями. Меньшие модели могут испытывать трудности со сложными исследованиями. Расширенное мышление опционально, но может значительно улучшить качество анализа для сложных задач реверс-инжиниринга.
Использование GhidrAssistMCP для инструментального анализа
GhidrAssistMCP предоставляет инструменты MCP, позволяющие LLM напрямую взаимодействовать с аналитическими возможностями Ghidra.
Настройка
-
Запустите MCP-сервер
-
Настройте GhidrAssist:
- Откройте Tools → GhidrAssist Settings → вкладка MCP Servers
- Добавьте сервер:
http://127.0.0.1:8081 как GhidrAssistMCP с типом транспорта SSE
-
Включите MCP в запросах:
- На вкладке Custom Query установите флажок "Use MCP"
- Опционально включите "Agentic" для автономного режима исследования
Режимы использования
Обычные MCP-запросы:
- Установите флажок "Use MCP"
- Задавайте вопросы, например "What does the current function do?"
- LLM может вызывать инструменты для получения декомпиляции, перекрестных ссылок и т.д.
Агентный режим (рекомендуется):
- Включите оба флажка "Use MCP" и "Agentic"
- Задавайте сложные вопросы, например "Find vulnerabilities in this function" или "Analyze the call graph"
- Агент ReAct будет:
- Предлагать шаги исследования в виде списка задач
- Систематически выполнять инструменты для сбора информации
- Отслеживать прогресс и накапливать результаты
- Синтезировать полный ответ с доказательствами
Примеры запросов:
- "What security vulnerabilities exist in this function?"
- "Trace the data flow from user input to this call"
- "Find all functions that modify global variable X"
- "Analyze the error handling in the current function"
Использование семантического графа (Graph-RAG)
Вкладка Semantic Graph предоставляет интерфейс графа знаний для изучения результатов анализа бинарных файлов без необходимости вызова LLM для каждого запроса.
Начало работы
-
Индексируйте бинарный файл:
- Откройте вкладку Semantic Graph
- Нажмите "ReIndex Binary" для извлечения структурных связей
- Нажмите "Semantic Analysis" для генерации сводок LLM (требуется API)
- Прогресс отображается в строке состояния
-
Исследуйте граф:
- List View: Просмотр всех индексированных функций со сводками и флагами безопасности
- Graph View: Визуализация связей вызовов с настраиваемой глубиной N-hop
- Search View: Полнотекстовый поиск по сводкам и аннотациям безопасности
-
Анализ безопасности:
- Нажмите "Security Analysis" для сканирования на наличие функций, связанных с безопасностью
- Результаты включают: сетевые API, ввод/вывод файлов, использование криптографии, строковые шаблоны
- Уровни риска (LOW/MEDIUM/HIGH) назначаются на основе обнаруженных функций
Интеграция с вкладкой Explain
При просмотре функции на вкладке Explain:
- Если функция проиндексирована, предварительно вычисленная сводка отображается мгновенно
- Панель безопасности отображает: уровень риска, профиль активности, используемые API
- Нажмите "Edit", чтобы изменить сводки (защищены от автоматической перезаписи)
- Используйте "Refresh", чтобы повторно сгенерировать сводку с помощью LLM
Преимущества
- Быстрые запросы: Предварительно вычисленные сводки устраняют задержку LLM для повторных запросов
- Автономный анализ: Просмотр индексированных данных без подключения к API
- Фокус на безопасности: Автоматическое обнаружение шаблонов кода, связанных с безопасностью
- Обнаружение модулей: Обнаружение сообществ автоматически группирует связанные функции
Домашняя страница
https://symgraph.ai
Минимальная версия
Этот плагин требует следующую минимальную версию Ghidra:
Лицензия
Этот плагин выпущен под лицензией MIT.