Skip to main content
Glama

IDA Pro MCP

MIT License
2,280
  • Linux
  • Apple

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_globals_filter(offset, count, filter) : список соответствующих глобальных переменных в базе данных (постранично, отфильтровано).
  • list_globals(offset, count) : список всех глобальных переменных в базе данных (с разбивкой на страницы).
  • list_strings_filter(offset, count, filter) : список совпадающих строк в базе данных (постранично, отфильтровано).
  • list_strings(offset, count) : список всех строк в базе данных (с разбивкой на страницы).
  • decompile_function(address) : Декомпилировать функцию по указанному адресу.
  • disassemble_function(start_address) : получить ассемблерный код (адрес: инструкция; комментарий) для функции.
  • get_xrefs_to(address) : Получить все перекрестные ссылки на указанный адрес.
  • get_xrefs_to_field(struct_name, field_name) : получить все перекрестные ссылки на именованное поле структуры (член).
  • 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) : устанавливает тип локальной переменной.

Небезопасные функции (требуется флаг --unsafe ):

  • dbg_get_call_stack() : получить текущий стек вызовов.
  • dbg_get_registers() : Получить все регистры и их значения. Эта функция доступна только при отладке.
  • dbg_run_to(address) : запустить отладчик по указанному адресу.
  • dbg_exit_process() : Выход из отладчика.
  • dbg_continue_process() : Продолжить отладку.
  • dbg_enable_breakpoint(address, enable) : включение или отключение точки останова по указанному адресу.
  • dbg_list_breakpoints() : список всех точек останова в программе.
  • dbg_set_breakpoint(address) : Установить точку останова по указанному адресу.
  • dbg_delete_breakpoint(address) : удалить точку останова по указанному адресу.
  • dbg_start_process() : Запустить отладчик.

Предпосылки

Установка

Установите (или обновите) пакет 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, это еще больше повысит точность.

SSE Транспорт и безголовый MCP

Вы можете запустить сервер SSE для подключения к пользовательскому интерфейсу следующим образом:

uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse

После установки idalib вы также можете запустить headless-сервер SSE:

uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable

Примечание . Функцию idalib предоставил Вилли Баллентин .

Ручная установка

Примечание : этот раздел предназначен для 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 } } }

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

<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
    AiDD MCP Server provides a secure interface for AI agents to perform file system operations and code analysis, enhancing AI-assisted development workflows across multiple programming languages.
    Last updated -
    29
    62
    Python
    Apache 2.0
    • Apple
    • Linux
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server for IDA interaction and automation. This server provides tools to read IDA database via Large Language Models.
    Last updated -
    19
    443
    Python
    MIT License
    • 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

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrexodia/ida-pro-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server