Расширенный плагин на основе LLM для интерактивной помощи в реверс-инжиниринге в Ghidra.
Описание
GhidrAssist интегрирует большие языковые модели (LLM) в Ghidra для обеспечения интеллектуальной помощи при исследовании бинарных файлов и реверс-инжиниринге. Он поддерживает любой API, совместимый с OpenAI v1, включая локальные модели (Ollama, LM-Studio, Open-WebUI) и облачных провайдеров (OpenAI, Anthropic, Azure).
Ключевые особенности
Основная функциональность:
Объяснение кода — объяснение функций и инструкций как в дизассемблере, так и в декомпилированном псевдокоде C
Панель анализа безопасности, показывающая уровень риска, профиль активности и использование API
Редактируемые сводки с защитой от автоматической перезаписи пользовательских правок
Интерактивный чат — многоэтапные диалоговые запросы с сохранением истории чата
Пользовательские запросы — прямые запросы к LLM с опциональным контекстом текущей функции/местоположения
Система знаний Graph-RAG:
Семантический граф знаний — иерархическое представление анализа бинарных файлов
Убедитесь, что пути к базам данных RLHF и RAG соответствуют вашему окружению.
Укажите хост API вашему предпочтительному провайдеру API и установите ключ API.
(Опционально) На вкладке Analysis Options установите уровень усилий рассуждения (None/Low/Medium/High) для моделей, поддерживающих расширенное мышление.
Откройте GhidrAssist с помощью опции GhidrAssist в меню Windows и начинайте исследование.
Настройка LLM
GhidrAssist работает с любым API, совместимым с OpenAI v1. Детали настройки зависят от провайдера - вот некоторые полезные ресурсы:
Локальные провайдеры LLM:
LM Studio - Простое локальное размещение моделей с графическим интерфейсом
Ollama - Управление локальными моделями из командной строки
High: Глубокий анализ безопасности (~30-60 с, стоимость x2, рекомендуется для поиска уязвимостей)
Примечание: Агентный режим требует моделей с сильными способностями к вызову функций и многошаговыми рассуждениями. Меньшие модели могут испытывать трудности со сложными исследованиями. Расширенное мышление опционально, но может значительно улучшить качество анализа для сложных задач реверс-инжиниринга.
Использование GhidrAssistMCP для инструментального анализа
Добавьте сервер: 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