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 - Веб-интерфейс для локальных моделей
Облачные провайдеры: