IDA Pro MCP

MIT License
1,756
  • Linux
  • Apple

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) : устанавливает тип локальной переменной.

Предпосылки

Установка

Установите (или обновите) пакет IDA Pro MCP:

pip install --upgrade git+https://github.com/mrexodia/ida-pro-mcp

Настройте серверы MCP и установите плагин IDA:

ida-pro-mcp --install

Важно : убедитесь, что вы полностью перезапустили 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 самостоятельно, выполните следующие действия:

  1. Установить uv глобально:
    • Windows: pip install uv
    • Linux/Mac: curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Клонируйте этот репозиторий, для этого примера C:\MCP\ida-pro-mcp .
  3. Перейдите к конфигурации серверов Cline/Roo Code MCP (см. снимок экрана).
  4. Нажмите на вкладку Установлено .
  5. Нажмите «Настроить серверы MCP» , чтобы открыть cline_mcp_settings.json .
  6. Добавьте сервер ida-pro-mcp :
{ "mcpServers": { "github.com/mrexodia/ida-pro-mcp": { "command": "uv", "args": [ "--directory", "c:\\MCP\\ida-pro-mcp", "run", "server.py", "--install-plugin" ], "timeout": 1800, "disabled": false, "autoApprove": [ "check_connection", "get_metadata", "get_function_by_name", "get_function_by_address", "get_current_address", "get_current_function", "convert_number", "list_functions", "list_strings", "search_strings", "decompile_function", "disassemble_function", "get_xrefs_to", "get_entry_points", "set_comment", "rename_local_variable", "rename_global_variable", "set_global_variable_type", "rename_function", "set_function_prototype", "declare_c_type", "set_local_variable_type" ], "alwaysAllow": [ "check_connection", "get_metadata", "get_function_by_name", "get_function_by_address", "get_current_address", "get_current_function", "convert_number", "list_functions", "list_strings", "search_strings", "decompile_function", "disassemble_function", "get_xrefs_to", "get_entry_points", "set_comment", "rename_local_variable", "rename_global_variable", "set_global_variable_type", "rename_function", "set_function_prototype", "declare_c_type", "set_local_variable_type" ] } } }

Чтобы проверить, работает ли соединение, можно выполнить следующий вызов инструмента:

<use_mcp_tool> <server_name>github.com/mrexodia/ida-pro-mcp</server_name> <tool_name>check_connection</tool_name> <arguments></arguments> </use_mcp_tool>

Установка плагина IDA

Плагин IDA Pro будет установлен автоматически при запуске сервера MCP. Если вы отключили опцию --install-plugin , выполните следующие шаги:

  1. Скопируйте ( не перемещайте ) src/ida_pro_mcp/mcp-plugin.py в папку плагинов ( %appdata%\Hex-Rays\IDA Pro\plugins в Windows).
  2. Откройте IDB и нажмите Edit -> Plugins -> MCP чтобы запустить сервер.

Сравнение с другими серверами MCP

Существует несколько серверов IDA Pro MCP, но я создал свой собственный по нескольким причинам:

  1. Установка должна быть полностью автоматизирована.
  2. Архитектура других плагинов затрудняет быстрое добавление новых функций (слишком много шаблонного кода ненужных зависимостей).
  3. Изучать новые технологии весело!

Если вы хотите с ними ознакомиться, вот список (в том порядке, в котором я их обнаружил):

Не стесняйтесь открывать PR, чтобы добавить свой сервер IDA Pro MCP здесь.

Разработка

Добавление новых функций — это очень простой и оптимизированный процесс. Все, что вам нужно сделать, это добавить новую функцию @jsonrpc в mcp-plugin.py , и ваша функция будет доступна на сервере MCP без дополнительного шаблона! Ниже представлено видео, в котором я добавляю функцию get_metadata менее чем за 2 минуты (включая тестирование):

https://github.com/user-attachments/assets/951de823-88ea-4235-adcb-9257e316ae64

Чтобы протестировать сам сервер MCP:

uv run mcp dev src/ida_pro_mcp/server.py

Откроется веб-интерфейс по адресу http://localhost:5173 , который позволит вам взаимодействовать с инструментами MCP для тестирования.

Для тестирования я создаю символическую ссылку на плагин IDA, а затем отправляю запрос JSON-RPC напрямую на http://localhost:13337/mcp . После включения символических ссылок вы можете выполнить следующую команду:

uv run ida-pro-mcp --install

Сгенерировать журнал изменений прямых коммитов в main :

git log --first-parent --no-merges 1.2.0..main "--pretty=- %s"

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    An 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 -
    6
    140
    Python
    MIT License
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server that enables AI assistants to interact with IDA Pro for reverse engineering and binary analysis tasks.
    Last updated -
    8
    14
    Python
    MIT License
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    MCP server for reverse engineering that enables interaction with IDA Pro for analysis tasks such as decompilation, disassembly, and memory engagement reports.
    Last updated -
    24
    28
    Python
    MIT License
  • -
    security
    A
    license
    -
    quality
    An 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,290
    Apache 2.0
    • Apple

View all related MCP servers

ID: 35q428b8zg