MCP сервер для обратной разработки Windows исполняемых файлов и бинарных форматов. Объединяет статическую триаж, восстановление функций с помощью Ghidra, плагино-управляемые инструменты, управление артефактами и опциональное изолированное выполнение в среде Windows.
Rikune — это MCP-сервер для реверс-инжиниринга исполняемых файлов Windows и связанных бинарных форматов. Он объединяет приём образцов, статическую триажную обработку, восстановление функций с помощью Ghidra, специализированные инструменты на основе плагинов, управление артефактами и опциональное выполнение в изолированной среде Windows через интерфейс Model Context Protocol.
Текущий серверный рабочий процесс, ориентированный на ИИ, организован вокруг минимального шлюзового интерфейса:
workflow.search для ранжирования соответствующих профилей, рабочих процессов и специализированных возможностей для типа файла и цели пользователя.workflow.run action=request_upload для загрузки файла с хоста или позвольте workflow.search указывать устаревшим клиентам на скрытые инструменты совместимости приёма образцов.workflow.run action=start с возвращённым sample_id.workflow.run action=status и workflow.run action=promote для мониторинга и углубления поэтапного запуска.artifact.read для полных сохранённых артефактов, когда компактных выходных данных рабочего процесса недостаточно.sample.*, workflow.analyze.*, workflow.triage, tools.discover и task.status остаются зарегистрированными для совместимости или низкоуровневого просмотра, но новые клиенты должны предпочитать workflow.search, workflow.run и artifact.read.
При подключении через удалённый шлюз rikune-agent MCP-клиенты видят стабильные имена транспорта:
workflow_search, workflow_run, artifact_read, rikune_tool_call и
элементы управления rikune_connection_*. rikune_connection_refresh обновляет только внутренний кеш возможностей вышестоящего сервера; он не расширяет список MCP-инструментов. Используйте rikune_tool_call только после того, как workflow_search идентифицирует конкретный внутренний под инструмент анализатора, не охваченный основными шлюзами рабочих процессов или артефактов.
workflow.search использует тип образца, результаты и метаданные профиля, чтобы направить к специализированным возможностям, не раскрывая все инструменты заранее.Статический Docker — самый безопасный вариант по умолчанию. Он не выполняет образцы.
.\rikune.ps1 install -Profile static -DataRoot "D:\Docker\rikune"
./rikune.sh install --profile static --data-root "$HOME/.rikune"
Ручной эквивалент:
npm install
npm run build
npm run docker:generate:all
docker compose --env-file .docker-runtime.env -f docker-compose.analyzer.yml up -d --build analyzer
Гибридный режим запускает анализатор в Docker и делегирует работу в реальной Windows Windows Host Agent. Host Agent может запускать Windows Sandbox по требованию или управлять настроенной Hyper-V VM.
.\rikune.ps1 install -Profile hybrid -InstallRuntime
Из Linux/macOS с удалённым хостом Windows:
./rikune.sh install --profile hybrid --windows-host <windows-host> --windows-user <windows-user>
Подключение MCP-клиента не запускает Windows Sandbox и не выполняет образец. Работа в реальной среде выполняется только когда инструмент явно запрашивает это, например runtime.debug.session.start, runtime.debug.command, sandbox.execute или продвинутая стадия динамического выполнения.
npm install
npm run build
npm test
node dist/index.js
Корневой пакет требует Node.js 22 или новее. Некоторые подпакеты среды выполнения могут работать на более старых версиях Node, но для разработки репозитория и опубликованного корневого CLI следует использовать Node 22+.
Начинайте с workflow.search всякий раз, когда запрашиваемый рабочий процесс, тип файла или бэкенд неясен. Он ранжирует соответствующие профили и возвращает компактные подсказки по готовности/маршрутизации, не активируя скрытые специализированные инструменты.
Для файлов с хоста вызовите workflow.run action=request_upload, отправьте сырые байты POST на возвращённый URL загрузки, затем прочитайте sample_id из HTTP-ответа. sample.request_upload и sample.ingest — это вспомогательные средства для совместимости, а не обычный путь, ориентированный на ИИ.
Для удалённого анализатора или развёртываний rikune-agent установите API_PUBLIC_BASE_URL, RIKUNE_API_PUBLIC_BASE_URL или RIKUNE_ANALYZER_PUBLIC_URL как базовый URL HTTP API, доступный клиенту, например http://159.195.136.226:18080. Тогда сессии загрузки будут возвращать публичные значения upload_url / status_url вместо локальных для контейнера URL localhost. Удалённый шлюз также нормализует URL загрузки localhost от старых анализаторов до своего настроенного адреса анализатора.
Если HTTP API включён, POST /api/v1/samples всё ещё доступен для интеграций, не основанных на MCP. Успешный приём возвращает sample_id; после импорта анализ должен использовать sample_id, а не локальный путь.
Вызовите workflow.run action=start с sample_id. Первая стадия выполняет быстрый профиль и создаёт или повторно использует сеанс анализа. Возвращённый plan_id сопоставляется с сохранённым сеансом анализа.
Используйте workflow.run action=promote для запроса более глубоких стадий. Конвейер в настоящее время моделирует следующие стадии:
fast_profileenrich_staticfunction_mapreconstructsemantic_reviewsdynamic_plandynamic_executesummarizeДолго работающие задачи ставятся в очередь через систему заданий. Опрашивайте компактное состояние стадий с помощью workflow.run action=status.
workflow.run action=status — это основной вид поэтапного запуска. Большие полезные нагрузки исторических стадий могут быть обрезаны с предупреждением верхнего уровня; используйте artifact.read для полных артефактов. task.status — это сырой вид совместимости очереди/процесса и включает телеметрию памяти external_active_* для подпроцессов анализатора.
Полезные последующие интерфейсы:
workflow.searchworkflow.runanalysis.context.getartifact.read, а также вспомогательные средства совместимости артефактов, такие как artifact.list, artifact.diff и artifact.downloadreport.summarize, report.generate, workflow.summarizeworkflow.semantic_name_reviewworkflow.function_explanation_reviewworkflow.module_reconstruction_reviewtool.help, tool.readiness и tools.discover для проверки совместимости/отладкиТекущий путь кода:
src/index.ts
-> loadConfig()
-> WorkspaceManager / DatabaseManager / PolicyGuard / CacheManager / StorageManager / JobQueue
-> optional RuntimeClient или Windows sandbox bootstrap
-> registerAllTools()
-> MCP stdio server
Основные модули сервера находятся в src/core/:
| Область | Текущий файл |
|---|---|
| Обёртка MCP-сервера | src/core/server.ts |
| Реестр инструментов/подсказок/ресурсов MCP | src/core/mcp-registry.ts |
| Выполнение инструментов, валидация, хуки | src/core/tool-executor.ts |
| Оркестрация реестра | src/core/tool-registry.ts |
| Срезы встроенного реестра | src/core/tool-registry/*.ts |
| Фасад менеджера плагинов | src/core/plugins.ts |
| Обнаружение/загрузка плагинов | src/core/plugin-orchestrator.ts |
| Прогрессивное раскрытие инструментов | src/core/tool-surface-manager.ts |
Некоторые файлы корневого уровня, такие как src/server.ts, src/tool-registry.ts и src/plugins.ts, остаются прямыми точками совместимости. Новый код должен размещаться в src/core/*.
| Плоскость | Назначение | Ключевой код |
|---|---|---|
| Analyzer | MCP-сервер stdio, HTTP API, хранилище, задания, статические инструменты, оркестрация плагинов | src/index.ts, src/core/* |
| Runtime Node | Изолированный исполнитель задач внутри песочницы или ВМ | packages/runtime-node/* |
| Windows Host Agent | Запускает/останавливает Windows Sandbox или Hyper-V среду выполнения и предоставляет конечные точки управления средой выполнения | packages/windows-host-agent/* |
| Agent Gateway | Шлюз/прокси MCP для управления соединениями анализатора/среды выполнения | src/rikune-agent-gateway.ts |
Режимы среды выполнения настраиваются через runtime.mode или переменные окружения:
disabled: без делегирования среды выполнения.manual: подключение к предоставленной конечной точке среды выполнения.remote-sandbox: делегирование Windows Host Agent.auto-sandbox: анализатор в Windows запускает Windows Sandbox локально.Анализаторы Docker/WSL должны использовать remote-sandbox, а не auto-sandbox.
Rikune в настоящее время содержит 111 встроенных плагинов в src/plugins/<id>/. Плагины могут регистрировать инструменты, объявлять зависимости, предоставлять схему конфигурации, участвовать в хуках жизненного цикла, предоставлять метаданные Docker и объявлять ограниченные инструменты на основе Worker через метаданные workerBackend.
Набор Worker в мэйнфрейме оставляет только плановые инструменты как поверхности для триажа и передачи, затем добавляет рядом с ними явные инструменты выполнения. restringer.deobfuscation.run, jsimplifier.pipeline.run, jsir.cascade.normalize, gtirb.ir.generate, remill.lift.run, manifold.fact.extract, qbdi.trace.run и culifter.gpu.artifact.inventory предоставляют контракты Worker через workflow.search, plugin.list, tool.help и tool.readiness; tools.discover остаётся низкоуровневым порталом совместимости. Обнаружение и готовность остаются пассивными: они сообщают метаданные бэкенда и рекомендации по настройке, не запуская REstringer, JSIMPLIFIER, JSIR/CASCADE, GTIRB, Remill, Manifold, QBDI, драйверы GPU, Node/V8, браузеры или инструментацию среды выполнения.
Генерация Docker считывает systemDeps плагинов и метаданные упаковки Worker напрямую. Образы по умолчанию устанавливают малорисковые статические обёртки, такие как REstringer, JSIMPLIFIER, Manifold, WABT и валидация LIEF; опциональные профили могут включать JSIR/CASCADE, JSVMP, GTIRB, radare2 и статические маршруты Triton; тяжёлые/среды выполнения/GPU/лицензионно-чувствительные бэкенды остаются за профильными шлюзами, BYO или sidecar.
node scripts/generate-docker.mjs --dry-run
node scripts/generate-docker.mjs --profile=full --backend-profile=optional
node scripts/generate-docker.mjs --all-profiles --dry-run
Загрузка плагинов управляется переменной PLUGINS:
PLUGINS=* # все встроенные
PLUGINS=pe-analysis,yara # выбранные плагины
PLUGINS=-dynamic # все, кроме динамических
Используйте эти MCP-инструменты во время выполнения:
workflow.searchworkflow.runplugin.listplugin.enableplugin.disabletools.discover и tool.readiness для низкоуровневой проверки совместимости/отладкиСмотрите docs/PLUGINS.md и packages/plugin-sdk/README.md.
Если api.enabled равен true, встроенный файловый сервер предоставляет:
| Конечная точка | Назначение |
|---|---|
/dashboard и / | Панель управления |
/api/v1/health | Проверка работоспособности |
/api/v1/ready | Готовность базы данных, очереди, среды выполнения и бэкендов плагинов |
/api/v1/events | SSE-события |
/api/v1/samples | Прямая загрузка образцов |
/api/v1/samples/:id | Метаданные образца |
/api/v1/samples/:id/download | Скачивание исходного образца |
/api/v1/artifacts | Список артефактов |
/api/v1/artifacts/:id | Чтение/удаление артефакта |
/api/v1/uploads/:token | Постоянная сессия загрузки POST/статус |
Аутентификация по API-ключу, ограничение скорости, заголовки безопасности и ограниченный CORS обрабатываются HTTP-уровнем.
Минимальный базовый уровень для разработки:
Опциональные инструменты зависят от конкретного плагина. Запустите system.health, system.setup.guide, tool.readiness и plugin.list, чтобы увидеть, чего не хватает в данной среде.
src/
index.ts главная точка входа сервера
core/ MCP-сервер, реестр, исполнитель, оркестрация плагинов
core/tool-registry/ срезы регистрации встроенных инструментов/подсказок/ресурсов
tools/ реализации основных инструментов
workflows/ поэтапные рабочие процессы анализа, триажа, реконструкции, обзора
analysis/ состояние выполнения и фоновый запуск задач
plugins/ 111 встроенных плагинов
persistence/ персистентность SQLite и рабочего пространства
sample/ финализация образца и просмотр рабочего пространства
storage/ артефакты, загрузки, удержание
runtime-client/ клиент делегирования среды выполнения на стороне анализатора
worker/ оркестрация рабочих процессов Ghidra и Python
packages/
plugin-sdk/ публичный SDK для плагинов
shared/ типы контрактов среды выполнения и инструментов
runtime-node/ изолированный исполнитель среды выполнения
windows-host-agent/ хост-агент Windows Sandbox / Hyper-V
workers/ скрипты Python и правила YARA
docker/ сгенерированные шаблоны Dockerfile и файлы профилей
docs/ документация по архитектуре, плагинам, среде выполнения, развёртыванию
tests/ модульные, интеграционные и сквозные тесты
npm install
npm run build
npm test
npm run typecheck
npm run validate
npm run docker:generate:all
Полезные целенаправленные проверки:
npm run test:unit
npm run test:integration
npm run test:e2e
npm run build:runtime
Локальная сборка:
{
"mcpServers": {
"rikune": {
"command": "node",
"args": ["D:/Playground/windows-exe-decompiler-mcp-server/dist/index.js"],
"env": {
"API_ENABLED": "true",
"API_PORT": "18080",
"API_PUBLIC_BASE_URL": "http://127.0.0.1:18080",
"PLUGINS": "*"
}
}
}
}
Docker stdio:
{
"mcpServers": {
"rikune": {
"command": "docker",
"args": ["exec", "-i", "rikune-analyzer", "node", "dist/index.js"]
}
}
}
Опубликованный пакет:
npm install -g rikune
rikune
rikune docker-stdio
rikune agent
По умолчанию Rikune хранит постоянные данные в корневой папке пользователя Rikune. Установщики Docker обычно сопоставляют этот корень с каталогом хоста, например D:\Docker\rikune.
Типичные подкаталоги:
samples/artifacts/uploads/cache/logs/Рабочие пространства образцов группируются по SHA-256, чтобы избежать коллизий путей и сохранить неизменные оригиналы.
Rikune разработан для анализа вредоносного ПО и непроверенных бинарных файлов, но сам по себе не является магической границей безопасности.
PolicyGuard.Смотрите SECURITY.md и TROUBLESHOOTING.md.
MIT