Skip to main content
Glama
fosdickio

Binary Ninja MCP

by fosdickio

Двоичный ниндзя MCP

Этот репозиторий содержит плагин Binary Ninja, сервер MCP и мост, который обеспечивает бесшовную интеграцию возможностей Binary Ninja с вашим любимым клиентом LLM.

Функции

  • Простая интеграция в реальном времени между клиентами Binary Ninja и MCP

  • Улучшенный процесс обратного проектирования с помощью ИИ

  • Основная поддержка Claude Desktop как клиента MCP, но расширяемая для других интеграций

Related MCP server: MCPunk

Примеры

Создание отчета по двоичному анализу

Генерация отчета по двоичному анализу

Переименование функций

Демонстрация функции переименования

Компоненты

Этот репозиторий содержит два отдельных компонента:

  1. Плагин Binary Ninja, который предоставляет сервер MCP, раскрывающий возможности Binary Ninja через конечные точки HTTP. Его можно использовать с любым клиентом, реализующим протокол MCP.

  2. Отдельный компонент моста MCP, который соединяет ваш любимый клиент MCP с сервером Binary Ninja MCP. Хотя Claude Desktop является основным путем интеграции, сервер MCP может использоваться с другими клиентами.

Поддерживаемые интеграции

В следующей таблице указано, какие интеграции с Binary Ninja поддерживаются в настоящее время.

Функция

Описание

get_binary_status

Получить текущий статус загруженного двоичного файла.

list_classes

Перечислите все имена пространств имен/классов в программе.

list_data_items

Перечислите определенные метки данных и их значения.

list_exports

Список экспортированных функций/символов.

list_imports

Список импортированных символов в программе.

list_methods

Перечислите все имена функций в программе.

list_namespaces

Перечислите все неглобальные пространства имен в программе.

list_segments

Перечислите все сегменты памяти в программе.

rename_data

Переименовать метку данных по указанному адресу.

rename_function

Переименовать функцию, присвоив ей новое имя, определенное пользователем.

search_functions_by_name

Поиск функций, имя которых содержит заданную подстроку.

decompile_function

Декомпилировать определенную функцию по имени и вернуть декомпилированный код C.

set_comment

Оставьте комментарий по определенному адресу.

set_function_comment

Установить комментарий для функции.

get_comment

Получите комментарий по определенному адресу.

get_function_comment

Получить комментарий к функции.

delete_comment

Удалить комментарий по указанному адресу.

delete_function_comment

Удалить комментарий к функции.

get_assembly_function

Получить ассемблерное представление функции по имени или адресу.

function_at

Получите имя функции, которой принадлежит адрес.

code_references

Получить имена и адреса функций, которые вызывают заданную функцию.

get_user_defined_type

Извлечь определение пользовательского типа (структура, перечисление, typedef, объединение).

rename_variable

Переименовать переменную внутри заданной функции.

retype_variable

Перепечатайте переменную внутри заданной функции.

define_types

Добавьте определения типов из определения типа строки C.

edit_function_signature

Изменить сигнатуру данной функции, заданную как строковый тип.

Предпосылки

Установка

Плагин Binary Ninja

Вы можете установить плагин через менеджер плагинов Binary Ninja ( Plugins > Manage Plugins ).

Список менеджеров плагинов

Чтобы вручную настроить плагин, этот репозиторий можно скопировать в папку плагинов Binary Ninja.

Claude Desktop Bridge (опционально)

Это необходимо только в том случае, если вы хотите использовать Claude Desktop в качестве клиента MCP. Сначала убедитесь, что у вас настроена виртуальная среда:

git clone git@github.com:fosdickio/binary_ninja_mcp.git cd binary_ninja_mcp python3 -m venv .venv source .venv/bin/activate # On macOS/Linux pip install -r bridge/requirements.txt

Автоматическая конфигурация (Mac)

На Mac вы можете автоматизировать настройку, выполнив:

./scripts/setup_claude_desktop.py

Ручная настройка

В других операционных системах или для ручной настройки интеграции Claude Desktop:

  1. Перейдите в Settings > Developer > Edit Config

  2. Добавьте следующую конфигурацию:

{ "mcpServers": { "binary_ninja_mcp": { "command": "/ABSOLUTE/PATH/TO/binary_ninja_mcp/.venv/bin/python", "args": [ "/ABSOLUTE/PATH/TO/binary_ninja_mcp/bridge/binja_mcp_bridge.py" ] } } }

Примечание: замените /ABSOLUTE/PATH/TO на фактический абсолютный путь к каталогу вашего проекта. Для доступа к установленным зависимостям необходимо использовать интерпретатор Python виртуальной среды.

Использование

Клод Десктоп

  1. Откройте Binary Ninja и установите плагин Binary Ninja MCP

  2. Перезапустите Binary Ninja, а затем откройте двоичный файл.

  3. Запустите сервер MCP ( Plugins > MCP Server > Start MCP Server )

  4. Запустить Claude Desktop

Интеграция будет автоматически доступна после открытия Claude Desktop.

Клод Интеграция

Теперь вы можете начать подсказывать Клоду о текущем открытом бинарнике. Примеры подсказок:

  • «Создать отчет по бинарному анализу для текущего двоичного файла».

  • «Переименовать функцию X в Y в текущем двоичном файле».

  • «Перечислить все функции в текущем двоичном файле».

  • «Каков статус загруженного двоичного файла?»

Другие интеграции MCP-клиента

Мост можно использовать с другими клиентами MCP, реализовав соответствующий уровень интеграции.

Разработка

Структура проекта организована следующим образом:

binary_ninja_mcp/ ├── bridge/ # MCP client integration ├── plugin/ # Binary Ninja plugin ├── scripts/ │ └── setup_claude_desktop.py # Setup script for Claude Desktop

Внося вклад

Вклады приветствуются. Пожалуйста, не стесняйтесь отправлять запрос на включение.

-
security - not tested
A
license - permissive license
-
quality - not tested

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/fosdickio/binary_ninja_mcp'

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