
Плагин для IDA Pro для реверс-инжиниринга на основе ИИ
Плагин для реверс-инжиниринга на основе ИИ для IDA Pro
Автор: Jason Tang
IDAssist — это плагин для IDA Pro, который интегрирует анализ на основе LLM непосредственно в интерфейс IDA, обеспечивая реверс-инжиниринг бинарных файлов с помощью ИИ через настраиваемые LLM-провайдеры, семантические графы знаний, поиск по RAG-документам и поддерживает большое разнообразие LLM-провайдеров.
Созданный на Python и PySide6, IDAssist работает как закрепляемая панель внутри IDA Pro 9.0+ и взаимодействует с LLM-провайдерами (OpenAI, Anthropic, Ollama, LiteLLM и другими) для анализа функций, предложения переименований, ответов на вопросы о коде и построения индексируемого графа знаний всего бинарного файла.

Объяснение функций — Создание подробных объяснений дизассемблированных функций на естественном языке с автоматическим анализом безопасности, включая уровень риска, профиль активности, флаги безопасности и обнаружение API.
Интерактивный чат запросов — Задавайте вопросы о бинарном файле с сохранением истории чата. Используйте контекстные макросы (#func, #addr, #line, #range) для внедрения кода функций, адресов или диапазонов дизассемблирования в запросы.
Автоматические действия — Предложения переименований функций, переменных и типов на основе ИИ. Просмотрите предлагаемые изменения в таблице с оценками уверенности, затем примените выбранные действия к IDB.
Семантический граф знаний — Создавайте и исследуйте граф знаний бинарного файла: функции, отношения вызовов, потоки данных и характеристики безопасности. Включает визуализацию графов, семантический поиск и обнаружение сообществ.
Поиск по RAG-документам — Загружайте справочные документы (.txt, .md, .rst, .pdf) и используйте их как контекст при запросах к LLM. Поддерживает гибридный текстовый+векторный поиск через индексацию Whoosh.
Интеграция с SymGraph — Отправляйте и получайте имена функций, переменных, типы и данные графа на платформу SymGraph. Включает многошаговый мастер с разрешением конфликтов при получении.
Управление настройками — Настройте несколько LLM и MCP провайдеров, управляйте учетными данными API SymGraph, настраивайте системный промпт и задавайте пути к базам данных.
Вкладка Query поддерживает автономный режим агента ReAct (Reasoning + Acting). При включении LLM планирует стратегию исследования, выполняет инструменты для сбора информации, анализирует результаты и синтезирует исчерпывающий ответ — всё автоматически за несколько раундов рассуждений.
Настройте уровень усилий рассуждения, чтобы контролировать, сколько LLM «думает» перед ответом:
IDAssist может подключаться к внешним MCP-серверам для взаимодействия с LLM с расширенными инструментами, где модель может программно проверять функции, читать дизассемблирование, запрашивать перекрестные ссылки и изменять IDB во время рассуждений. Поддерживаются как MCP-серверы на основе URL (SSE или Streamable HTTP), так и MCP-серверы на основе stdio, запускаемые из локальной команды CLI. IDAssist также предоставляет встроенные внутренние инструменты для вызова функций без необходимости внешнего MCP-сервера.
LLM-провайдеры с поддержкой вызова инструментов могут вызывать функции анализа IDA в середине диалога, что позволяет проводить итеративное исследование без ручного вмешательства.
Оставляйте положительные/отрицательные отзывы об объяснениях и ответах на запросы. Отзывы хранятся локально и могут использоваться для улучшения инженерии промптов и выбора модели.
IDAssist следует шаблону MVC (Model-View-Controller):
src/views/) — виджеты вкладок PySide6, которые отправляют сигналы при взаимодействии пользователяsrc/controllers/) — соединяют сигналы представлений с вызовами служб, управляют состояниемsrc/services/) — бизнес-логика, LLM-провайдеры, доступ к базе данных, анализ графовsrc/services/internal_tools.py) — определения инструментов, специфичных для IDA, для вызова функций LLMsrc/services/graphrag/graphrag_tools.py) — инструменты чтения/записи семантического графа для взаимодействия с LLMКлючевые принципы проектирования:
execute_on_main_thread()Установите плагин (рекомендуется — IDA Plugin Manager):
hcli plugin install idassist
Это автоматически устанавливает плагин и его Python-зависимости в среду IDA.
Или установите вручную (из архива релиза):
Загрузите последний zip-архив релиза с GitHub Releases и распакуйте его в каталог плагинов IDA:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows:
Extract the zip into %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Затем установите зависимости, используя встроенный Python IDA (не системный Python):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"
Замените
<IDA_INSTALL_DIR>на путь установки IDA Pro (например,/opt/idapro-9.0илиC:\Program Files\IDA Pro 9.0).
Подробные инструкции по настройке см. в Начало работы.
IDAssist поддерживает следующие типы провайдеров:
| Провайдер | Модель | Сильные стороны |
|---|---|---|
| Anthropic | claude-sonnet-4-6 |
Вкладка Semantic Graph предоставляет граф знаний бинарного файла:
Исследуйте граф через List View (вызывающие, вызываемые, ребра, флаги), Visual Graph (интерактивная диаграмма узлов с расширением на N шагов) или Search (7 типов запросов, включая семантический поиск, похожие функции и контекст вызовов).
Щелкните правой кнопкой мыши в любом представлении дизассемблирования или псевдокода, чтобы получить доступ:
| Действие | Горячая клавиша | Результат |
|---|
requirements.txtПодробности см. в файле LICENSE.
| Уровень | Бюджет мышления | Лучше всего подходит для |
|---|
| Нет | Отключено | Быстрые, простые запросы |
| Низкий | ~2K токенов | Прямолинейный анализ |
| Средний | ~10K токенов | Умеренная сложность |
| Высокий | ~25K токенов | Глубокий анализ, сложный код |
Совет: Вы также можете задать переменную окружения IDAUSR, указывающую на пользовательский каталог, содержащий подкаталог plugins/.
Откройте IDAssist: Запустите IDA Pro, откройте бинарный файл и нажмите Ctrl+Shift+A (или Edit > Plugins > IDAssist).
Настройте провайдера: Перейдите на вкладку Settings, нажмите Add в разделе LLM Providers и настройте предпочитаемого провайдера.
Проанализируйте функцию: Перейдите к любой функции, щелкните вкладку Explain и нажмите Explain Function.
| Тип | Метод аутентификации | Примечания |
|---|
anthropic_platform | API Key | Прямой API Anthropic |
anthropic_oauth | OAuth (браузер) | Аутентификация через браузер |
anthropic_claude_cli | Локальный CLI | Использует бинарник claude CLI |
bedrock | Учетные данные AWS | Прямой API AWS Bedrock Converse |
openai_platform | API Key | Прямой API OpenAI |
openai_oauth | OAuth (браузер) | Аутентификация через браузер |
ollama | Нет (локально) | Самостоятельно размещенные модели |
litellm | URL прокси | Многопровайдерный прокси |
| Сильный анализ кода, расширенное мышление |
| OpenAI | gpt-5.3-codex | Быстрый, хороший общий анализ |
| Ollama | qwen2.5-coder:32b | Локально, не нужен API-ключ |
| Объяснить функцию | Ctrl+Shift+E | Открывает вкладку Explain и генерирует объяснение |
| Спросить о выделении | Ctrl+Shift+Q | Открывает вкладку Query с контекстом #func |
| Предложения переименования | — | Открывает вкладку Actions и генерирует предложения |