VOOZH about

URL: https://glama.ai/mcp/servers/mrexodia/ida-pro-mcp?locale=ru-RU

⇱ IDA Pro MCP by mrexodia | Glama


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() : Запустить отладчик.

Предпосылки

Related MCP server: idalib-mcp-headless

Установка

Установите (или обновите) пакет 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"
A
license - permissive license
C
quality
A
maintenance

Maintenance

Maintainers
4hResponse time
Release cycle
1Releases (12mo)
Commit activity
Issues opened vs closed

Latest Blog Posts

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