
Многосессионный маршрутизатор IDALib MCP для агентов кодирования. Анализируйте несколько бинарных файлов параллельно с помощью инструментов обратной разработки, совместимых с IDA.
Одна MCP-конечная точка. Множество изолированных сессий IDALib.
Легковесный, ориентированный на агентов управляющий слой для безголового бинарного анализа с использованием набора инструментов IDA Pro MCP.
[!IMPORTANT] Pocket Disasm — это независимый проект с открытым исходным кодом. Он не связан с Hex-Rays, не одобрен, не спонсируется и не является официальным продуктом Hex-Rays. IDA Pro и IDALib являются продуктами Hex-Rays и требуют отдельной действительной установки и лицензии. Pocket Disasm не распространяет IDA, IDALib или любое другое программное обеспечение Hex-Rays.
Pocket Disasm запускает один публичный MCP-маршрутизатор и назначает каждой бинарной программе собственный рабочий процесс IDALib. Кодирующие агенты могут создавать, выбирать, проверять, сохранять и закрывать сеансы анализа без запуска отдельного интерактивного окна IDA для каждого файла.
Проект использует зафиксированную ревизию mrexodia/ida-pro-mcp в качестве основной реализации анализа MCP и каталога инструментов. Pocket Disasm строит свой унифицированный многопользовательский маршрутизатор, изоляцию процессов, интеграции агентов, диагностики и терминальный центр управления вокруг этого вышестоящего проекта.
Выполните одну команду в PowerShell:
irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1 | iex
Затем откройте новый терминал и выполните:
pocket
Установщик создаёт изолированную среду Python в %LOCALAPPDATA%\PocketDisasm, устанавливает фиксированные зависимости, добавляет команду pocket в пользовательский PATH и открывает терминальный центр управления.
ida-pro-mcp.pocket.idalib.dll.Конечная точка по умолчанию:
http://127.0.0.1:13339/mcp
Порт можно изменить из TUI. Pocket Disasm обновляет все файлы конфигурации MCP, которые он ранее зарегистрировал, и при необходимости перезапускает маршрутизатор.
Агентам не нужен выделенный MCP-сервер для каждой бинарной программы. Они создают и маршрутизируют сессии через общую конечную точку:
idb_open(input_path="C:\\samples\\first.exe", session_id="first", wait=true)
idb_open(input_path="C:\\samples\\second.dll", session_id="second", wait=true)
decompile(addr="main", database="first")
survey_binary(database="second")
Выбор также можно ограничить текущим MCP-клиентом:
idb_select(database="first")
decompile(addr="main")
Это позволяет одной модели управлять несколькими бинарными файлами или нескольким агентам работать через один маршрутизатор, не разделяя выбранную базу данных.
flowchart LR
A1["Кодирующий агент A"] --> MCP["Pocket Disasm MCP<br/>127.0.0.1:13339/mcp"]
A2["Кодирующий агент B"] --> MCP
A3["Кодирующий агент N"] --> MCP
MCP --> S["Многопользовательский супервизор"]
S --> W1["Рабочий процесс IDALib<br/>бинарная программа A"]
S --> W2["Рабочий процесс IDALib<br/>бинарная программа B"]
S --> WN["Рабочий процесс IDALib<br/>бинарная программа N"]
Каждая активная сессия имеет собственный процесс, внутренний порт, изолированное рабочее пространство анализа, базу данных IDA и журнал рабочего процесса. Настраиваемый лимит рабочих процессов предотвращает неограниченное создание процессов; по умолчанию — 8, TUI принимает значения от 1 до 128.
Pocket Disasm добавляет следующие инструменты в стандартный каталог IDA MCP:
Обычные инструменты анализа, такие как survey_binary, lookup_funcs, func_query, find_bytes и decompile, принимают необязательный аргумент database. Если он опущен, Pocket Disasm использует сессию, выбранную этим MCP-клиентом.
TUI добавляет только запись pocket-disasm MCP в существующие файлы конфигурации; он не заменяет весь файл.
Та же операция доступна из CLI:
pocket integrate codex claude cursor --scope global
pocket integrate claude cursor vscode --scope project --project-dir .
TUI покрывает обычную установку и управление. CLI остаётся доступным для автоматизации и диагностики:
Выполните pocket <command> --help для просмотра всех опций.
Pocket Disasm хранит своё пользовательское состояние в:
%LOCALAPPDATA%\PocketDisasm
Важные файлы включают:
Используйте Просмотреть журналы в TUI или выполните:
pocket logs
TUI проверяет наличие новой версии один раз при запуске. Когда обновление доступно, в списке действий появляется Обновить Pocket Disasm. Обновление сохраняет конфигурацию, обновляет изолированную среду, перезапускает TUI и, если маршрутизатор ранее был запущен, возвращает его в работу.
winget.Pocket Disasm не включает IDA, IDALib или лицензию IDA. Это независимый проект, не связанный с Hex-Rays и не одобренный ими.
$script = irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1
& ([scriptblock]::Create($script)) -Uninstall
Записи MCP агентов намеренно не удаляются автоматически, чтобы при удалении не перезаписывалась несвязанная конфигурация. При необходимости их можно удалить из соответствующих файлов конфигурации агентов.
Pocket Disasm распространяется под лицензией MIT.
| Инструмент | Назначение |
|---|
idb_open | Создать изолированную сессию для локальной бинарной программы |
idb_list | Список сессий, состояний, процессов и текущего выбора |
idb_select | Выбрать сессию по умолчанию для текущего MCP-клиента |
idb_health | Проверка запуска рабочего процесса и его состояния |
idb_wait | Ожидание завершения автоанализа IDA и запуска MCP |
idb_save | Сохранить текущую базу данных IDA |
idb_logs | Прочитать последние выводы одного рабочего процесса |
idb_close | Остановить рабочий процесс и освободить его ресурсы |
| Агент | Глобальная конфигурация | Конфигурация проекта |
|---|
| Codex | ~/.codex/config.toml | Используется глобальная конечная точка |
| Claude Code | ~/.claude.json | .mcp.json |
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| VS Code | Профиль пользователя mcp.json | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | Используется глобальная конечная точка |
| Команда | Описание |
|---|
pocket | Открыть терминальный центр управления |
pocket doctor | Проверить зависимости Python, IDA, IDALib и MCP |
pocket start | Запустить единый маршрутизатор в фоне |
pocket stop | Остановить маршрутизатор и его рабочие процессы |
pocket restart | Перезапустить маршрутизатор |
pocket status | Показать состояние конечной точки и демона |
pocket logs | Вывести последние диагностические сообщения |
pocket port <port> | Изменить конечную точку в зарегистрированных конфигурациях агентов |
pocket config --max-workers <n> | Установить лимит одновременных рабочих процессов |
pocket integrate <agents> | Настроить одного или нескольких кодирующих агентов |
| Файл | Содержимое |
|---|
config.json | Путь к IDA, порты конечных точек и лимит рабочих процессов |
integrations.json | Файлы конфигурации MCP, управляемые Pocket Disasm |
events.log | Структурированные события жизненного цикла и трассировки исключений |
pocket-disasm.out.log | Стандартный вывод маршрутизатора |
pocket-disasm.err.log | Вывод ошибок маршрутизатора |
sessions/<session>/worker.log | Постоянный вывод рабочего процесса IDALib |
installer.log | Протокол установки и обновления |
update.log | Вывод обновления в TUI |