Integrations
Integrates with GitHub for repository management, as the MCP server itself is hosted on GitHub and references GitHub resources.
IDA Pro MCP
Простой MCP-сервер , позволяющий реверсировать вибрации в IDA Pro.
https://github.com/user-attachments/assets/6ebeaa92-a9db-43fa-b756-eececce2aca0
Двоичные файлы и приглашение к видео доступны в репозитории mcp-reversing-dataset .
Доступные функции:
check_connection
: Проверьте, запущен ли плагин IDA.get_metadata()
: Получить метаданные о текущем IDB.get_function_by_name(name)
: получить функцию по ее имени.get_function_by_address(address)
: получить функцию по ее адресу.get_current_address()
: получить адрес, выбранный пользователем в данный момент.get_current_function()
: получить функцию, выбранную пользователем в данный момент.convert_number(text, size)
: Преобразование числа (десятичного, шестнадцатеричного) в различные представления.list_functions(offset, count)
: список всех функций в базе данных (с разбивкой на страницы).list_strings(offset, count)
: список всех строк в базе данных (с разбивкой на страницы).search_strings(pattern, offset, count)
: поиск строк, содержащих заданный шаблон (без учета регистра).decompile_function(address)
: Декомпилировать функцию по указанному адресу.disassemble_function(start_address)
: получить ассемблерный код (адрес: инструкция; комментарий) для функции.get_xrefs_to(address)
: Получить все перекрестные ссылки на указанный адрес.get_entry_points()
: получить все точки входа в базе данных.set_comment(address, comment)
: Установить комментарий для указанного адреса в дизассемблированной функции и псевдокоде.rename_local_variable(function_address, old_name, new_name)
: переименовать локальную переменную в функции.rename_global_variable(old_name, new_name)
: переименовать глобальную переменную.set_global_variable_type(variable_name, new_type)
: устанавливает тип глобальной переменной.rename_function(function_address, new_name)
: переименовать функцию.set_function_prototype(function_address, prototype)
: Установить прототип функции.declare_c_type(c_declaration)
: создание или обновление локального типа из объявления C.set_local_variable_type(function_address, variable_name, new_type)
: устанавливает тип локальной переменной.
Предпосылки
- Python ( 3.11 или выше )
- Используйте
idapyswitch
для перехода на последнюю версию Python
- Используйте
- IDA Pro (8.3 или выше, рекомендуется 9)
- Поддерживаемый клиент MCP (выберите понравившийся)
Установка
Установите (или обновите) пакет IDA Pro MCP:
Настройте серверы MCP и установите плагин IDA:
Важно : убедитесь, что вы полностью перезапустили IDA/Visual Studio Code/Claude, чтобы установка вступила в силу. Claude работает в фоновом режиме, и вам нужно выйти из него с помощью значка в трее.
https://github.com/user-attachments/assets/65ed3373-a187-4dd5-a807-425dca1d8ee9
Оперативное проектирование
LLM склонны к галлюцинациям, и вам нужно быть конкретными с вашими подсказками. Для обратного проектирования преобразование между целыми числами и байтами особенно проблематично. Ниже приведен минимальный пример подсказки, не стесняйтесь начинать обсуждение или открывать проблему, если у вас хорошие результаты с другой подсказкой:
Ваша задача — проанализировать crackme в IDA Pro. Вы можете использовать инструменты MCP для извлечения информации. В общем случае используйте следующую стратегию:
- Проверьте декомпиляцию и добавьте комментарии с вашими выводами.
- Переименуйте переменные в более разумные имена.
- При необходимости измените типы переменных и аргументов (особенно типы указателей и массивов).
- Измените названия функций на более описательные.
- Если необходимы дополнительные сведения, разберите функцию и добавьте комментарии с вашими выводами.
- НИКОГДА не конвертируйте системы счисления самостоятельно. При необходимости используйте инструмент MCP convert_number!
- Не пытайтесь использовать метод полного перебора, извлекайте любые решения исключительно из дизассемблирования и простых скриптов Python.
- Создайте report.md с вашими выводами и предпринятыми шагами в конце.
- Когда вы найдете решение, попросите пользователя отправить отзыв с найденным вами паролем.
Эта подсказка была всего лишь первым экспериментом. Пожалуйста, поделитесь, если вы нашли способы улучшить результат!
Советы по повышению точности LLM
Большие языковые модели (LLM) — мощные инструменты, но иногда они могут испытывать трудности со сложными математическими вычислениями или демонстрировать «галлюцинации» (выдумывание фактов). Обязательно укажите LLM использовать conver_number
MCP, а также вам может понадобиться math-mcp для определенных операций.
Еще одна вещь, которую следует иметь в виду, заключается в том, что LLM не будут хорошо работать с запутанным кодом. Прежде чем пытаться использовать LLM для решения проблемы, осмотрите двоичный файл и потратьте некоторое время на (автоматическое) удаление следующих вещей:
- Шифрование строк
- Импорт хеширования
- Управляемое выравнивание потока
- Шифрование кода
- Антидекомпиляционные трюки
Вам также следует использовать такой инструмент, как Lumina или FLIRT, чтобы попытаться разрешить весь код библиотеки с открытым исходным кодом и C++ STL, это еще больше повысит точность.
Ручная установка
Примечание : этот раздел предназначен для LLM и опытных пользователей, которым нужны подробные инструкции по установке.
Ручная установка сервера MCP (код Cline/Roo)
Чтобы установить сервер MCP самостоятельно, выполните следующие действия:
- Установить uv глобально:
- Windows:
pip install uv
- Linux/Mac:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows:
- Клонируйте этот репозиторий, для этого примера
C:\MCP\ida-pro-mcp
. - Перейдите к конфигурации серверов Cline/Roo Code MCP (см. снимок экрана).
- Нажмите на вкладку Установлено .
- Нажмите «Настроить серверы MCP» , чтобы открыть
cline_mcp_settings.json
. - Добавьте сервер
ida-pro-mcp
:
Чтобы проверить, работает ли соединение, можно выполнить следующий вызов инструмента:
Установка плагина IDA
Плагин IDA Pro будет установлен автоматически при запуске сервера MCP. Если вы отключили опцию --install-plugin
, выполните следующие шаги:
- Скопируйте ( не перемещайте )
src/ida_pro_mcp/mcp-plugin.py
в папку плагинов (%appdata%\Hex-Rays\IDA Pro\plugins
в Windows). - Откройте IDB и нажмите
Edit -> Plugins -> MCP
чтобы запустить сервер.
Сравнение с другими серверами MCP
Существует несколько серверов IDA Pro MCP, но я создал свой собственный по нескольким причинам:
- Установка должна быть полностью автоматизирована.
- Архитектура других плагинов затрудняет быстрое добавление новых функций (слишком много шаблонного кода ненужных зависимостей).
- Изучать новые технологии весело!
Если вы хотите с ними ознакомиться, вот список (в том порядке, в котором я их обнаружил):
- https://github.com/taida957789/ida-mcp-server-plugin (только протокол SSE, требуется установка зависимостей в IDAPython).
- https://github.com/fdrechsler/mcp-server-idapro (MCP-сервер на TypeScript, для добавления новых функций требуется избыточный шаблонный код).
- https://github.com/MxIris-Reverse-Engineering/ida-mcp-server (пользовательский протокол сокетов, шаблон).
Не стесняйтесь открывать PR, чтобы добавить свой сервер IDA Pro MCP здесь.
Разработка
Добавление новых функций — это очень простой и оптимизированный процесс. Все, что вам нужно сделать, это добавить новую функцию @jsonrpc
в mcp-plugin.py
, и ваша функция будет доступна на сервере MCP без дополнительного шаблона! Ниже представлено видео, в котором я добавляю функцию get_metadata
менее чем за 2 минуты (включая тестирование):
https://github.com/user-attachments/assets/951de823-88ea-4235-adcb-9257e316ae64
Чтобы протестировать сам сервер MCP:
Откроется веб-интерфейс по адресу http://localhost:5173 , который позволит вам взаимодействовать с инструментами MCP для тестирования.
Для тестирования я создаю символическую ссылку на плагин IDA, а затем отправляю запрос JSON-RPC напрямую на http://localhost:13337/mcp
. После включения символических ссылок вы можете выполнить следующую команду:
Сгенерировать журнал изменений прямых коммитов в main
:
You must be authenticated.
Tools
MCP Server для автоматизированного обратного проектирования с помощью IDA Pro.
Related MCP Servers
- AsecurityAlicenseAqualityAn MCP server that provides a comprehensive interface to Semgrep, enabling users to scan code for security vulnerabilities, create custom rules, and analyze scan results through the Model Context Protocol.Last updated -6140PythonMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that enables AI assistants to interact with IDA Pro for reverse engineering and binary analysis tasks.Last updated -814PythonMIT License
- AsecurityAlicenseAqualityMCP server for reverse engineering that enables interaction with IDA Pro for analysis tasks such as decompilation, disassembly, and memory engagement reports.Last updated -2428PythonMIT License
- -securityAlicense-qualityAn MCP server that allows LLMs to autonomously reverse engineer applications by exposing Ghidra functionality, enabling decompilation, analysis, and automatic renaming of methods and data.Last updated -4,290Apache 2.0