
IDAssist v2.3.0
Плагин для IDA Pro для реверс-инжиниринга на основе ИИ
IDAssist
Плагин для реверс-инжиниринга на основе ИИ для 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, настраивайте системный промпт и задавайте пути к базам данных.
Расширенные возможности
ReAct Agent
Вкладка Query поддерживает автономный режим агента ReAct (Reasoning + Acting). При включении LLM планирует стратегию исследования, выполняет инструменты для сбора информации, анализирует результаты и синтезирует исчерпывающий ответ — всё автоматически за несколько раундов рассуждений.
Расширенное мышление
Настройте уровень усилий рассуждения, чтобы контролировать, сколько LLM «думает» перед ответом:
| Уровень | Бюджет мышления | Лучше всего подходит для |
|---|---|---|
| Нет | Отключено | Быстрые, простые запросы |
| Низкий | ~2K токенов | Прямолинейный анализ |
| Средний | ~10K токенов | Умеренная сложность |
| Высокий | ~25K токенов | Глубокий анализ, сложный код |
MCP Интеграция
IDAssist может подключаться к внешним MCP-серверам для взаимодействия с LLM с расширенными инструментами, где модель может программно проверять функции, читать дизассемблирование, запрашивать перекрестные ссылки и изменять IDB во время рассуждений. Поддерживаются как MCP-серверы на основе URL (SSE или Streamable HTTP), так и MCP-серверы на основе stdio, запускаемые из локальной команды CLI. IDAssist также предоставляет встроенные внутренние инструменты для вызова функций без необходимости внешнего MCP-сервера.
Вызов функций
LLM-провайдеры с поддержкой вызова инструментов могут вызывать функции анализа IDA в середине диалога, что позволяет проводить итеративное исследование без ручного вмешательства.
Обратная связь RLHF
Оставляйте положительные/отрицательные отзывы об объяснениях и ответах на запросы. Отзывы хранятся локально и могут использоваться для улучшения инженерии промптов и выбора модели.
Архитектура
IDAssist следует шаблону MVC (Model-View-Controller):
- Представления (
src/views/) — виджеты вкладок PySide6, которые отправляют сигналы при взаимодействии пользователя - Контроллеры (
src/controllers/) — соединяют сигналы представлений с вызовами служб, управляют состоянием - Службы (
src/services/) — бизнес-логика, LLM-провайдеры, доступ к базе данных, анализ графов - Внутренние инструменты (
src/services/internal_tools.py) — определения инструментов, специфичных для IDA, для вызова функций LLM - Графовые инструменты (
src/services/graphrag/graphrag_tools.py) — инструменты чтения/записи семантического графа для взаимодействия с LLM
Ключевые принципы проектирования:
- Все вызовы IDA API выполняются в главном потоке через
execute_on_main_thread() - Ответы LLM передаются в UI инкрементально (постепенно)
- Локальные базы данных SQLite для сохранения состояния (не требуется внешняя база данных)
- Реестр служб-одиночек с потокобезопасной инициализацией
Быстрый старт
-
Установите плагин (рекомендуется — 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.txtWindows:
"<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).Совет: Вы также можете задать переменную окружения
IDAUSR, указывающую на пользовательский каталог, содержащий подкаталогplugins/. -
Откройте IDAssist: Запустите IDA Pro, откройте бинарный файл и нажмите
Ctrl+Shift+A(или Edit > Plugins > IDAssist). -
Настройте провайдера: Перейдите на вкладку Settings, нажмите Add в разделе LLM Providers и настройте предпочитаемого провайдера.
-
Проанализируйте функцию: Перейдите к любой функции, щелкните вкладку Explain и нажмите Explain Function.
Подробные инструкции по настройке см. в Начало работы.
Настройка LLM-провайдера
IDAssist поддерживает следующие типы провайдеров:
| Тип | Метод аутентификации | Примечания |
|---|---|---|
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 прокси | Многопровайдерный прокси |
Рекомендуемые модели
| Провайдер | Модель | Сильные стороны |
|---|---|---|
| Anthropic | claude-sonnet-4-6 | Сильный анализ кода, расширенное мышление |
| OpenAI | gpt-5.3-codex | Быстрый, хороший общий анализ |
| Ollama | qwen2.5-coder:32b | Локально, не нужен API-ключ |
Использование семантического графа
Вкладка Semantic Graph предоставляет граф знаний бинарного файла:
- ReIndex Binary — Извлекает структуру функций, граф вызовов и перекрестные ссылки
- Semantic Analysis — Генерирует сводки LLM для каждой функции
- Security Analysis — Обнаруживает шаблоны уязвимостей и API, связанные с безопасностью
- Network Flow — Отслеживает сетевые операции по графу вызовов
- Community Detection — Группирует связанные функции в модули
Исследуйте граф через List View (вызывающие, вызываемые, ребра, флаги), Visual Graph (интерактивная диаграмма узлов с расширением на N шагов) или Search (7 типов запросов, включая семантический поиск, похожие функции и контекст вызовов).
Действия контекстного меню
Щелкните правой кнопкой мыши в любом представлении дизассемблирования или псевдокода, чтобы получить доступ:
| Действие | Горячая клавиша | Результат |
|---|---|---|
| Объяснить функцию | Ctrl+Shift+E | Открывает вкладку Explain и генерирует объяснение |
| Спросить о выделении | Ctrl+Shift+Q | Открывает вкладку Query с контекстом #func |
| Предложения переименования | — | Открывает вкладку Actions и генерирует предложения |
Требования
- IDA Pro 9.0+ с Python 3 и PySide6
- Hex-Rays Decompiler (рекомендуется для функций псевдокода)
- Python-пакеты, перечисленные в
requirements.txt
Документация
- Индекс документации
- Начало работы
- Справочник по вкладкам: Explain | Query | Actions | Semantic Graph | RAG | Settings
- Рабочие процессы: Explain | Query | Semantic Graph
Домашняя страница
Лицензия
Подробности см. в файле LICENSE.