Rikune 是一个面向 Windows EXE 和多格式二进制逆向的 MCP Server。它把样本导入、静态初筛、Ghidra 辅助函数恢复、插件化专业工具、artifact 管理,以及可选的隔离 Windows 运行时执行统一暴露给 MCP 客户端。
当前主路径是 staged analysis pipeline:
sample.ingest 或 sample.request_upload 导入样本。workflow.analyze.start 创建或复用分析 run。workflow.analyze.status 查询状态。workflow.analyze.promote 推进更深阶段。workflow.triage 仍保留为快速初筛和兼容入口;新客户端应优先使用 workflow.analyze.start/status/promote。
tools.discover 暴露。默认推荐 static profile。它不会执行样本,适合日常静态分析。
.\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
Hybrid profile 在 Docker 中运行 Analyzer,把真实 Windows 执行委托给 Windows Host Agent。Host Agent 可按需启动 Windows Sandbox,也可以控制预配置的 Hyper-V VM。
.\rikune.ps1 install -Profile hybrid -InstallRuntime
Linux/macOS analyzer + 远程 Windows runtime host:
./rikune.sh install --profile hybrid --windows-host <windows-host> --windows-user <windows-user>
连接 MCP 客户端不会启动 Sandbox,也不会运行样本。只有 runtime.debug.session.start、runtime.debug.command、sandbox.execute 或 promoted dynamic execution stage 这类显式 live runtime 工具才会触发运行时。
npm install
npm run build
npm test
node dist/index.js
根包要求 Node.js 22 或更新版本。部分 runtime 子包仍能在较旧 Node 上运行,但仓库开发、根 CLI 和发布包以 Node 22+ 为基线。
可选方式:
sample.ingest:传入服务端可读取路径或 bytes_b64。sample.request_upload:创建 durable upload session,然后向 HTTP upload URL POST 原始字节。POST /api/v1/samples。导入成功后会返回 sample_id。后续分析工具应使用 sample_id,不要继续依赖本地文件路径。
用 workflow.analyze.start 传入 sample_id。第一阶段会执行 fast profile,并创建或复用 analysis run。
workflow.analyze.promote 用于推进更深阶段。当前阶段模型包括:
fast_profileenrich_staticfunction_mapreconstructsemantic_reviewsdynamic_plandynamic_executesummarize长任务会进入 JobQueue。用 workflow.analyze.status 和 task.status 轮询。
workflow.analyze.status 是主要的 staged-run 视图。历史阶段结果过大时会裁剪,并在顶层 warnings 中说明;需要完整内容时用 artifact.read 读取持久化 artifact。task.status 是原始队列和进程视图,并包含 analyzer 子进程的 external_active_* 内存遥测。
常用后续工具:
sample.profile.getanalysis.context.getartifact.list、artifact.read、artifact.diff、artifact.downloadreport.summarize、report.generate、workflow.summarizeworkflow.semantic_name_reviewworkflow.function_explanation_reviewworkflow.module_reconstruction_reviewtools.discover、tool.readiness当前启动链路:
src/index.ts
-> loadConfig()
-> WorkspaceManager / DatabaseManager / PolicyGuard / CacheManager / StorageManager / JobQueue
-> 可选 RuntimeClient 或 Windows sandbox bootstrap
-> registerAllTools()
-> MCP stdio server
核心 server 代码位于 src/core/:
| 模块 | 当前文件 |
|---|---|
| MCP server wrapper | src/core/server.ts |
| MCP tool/prompt/resource registry | src/core/mcp-registry.ts |
| 工具执行、校验、hooks | src/core/tool-executor.ts |
| 注册编排 | src/core/tool-registry.ts |
| 内置注册切片 | src/core/tool-registry/*.ts |
| PluginManager facade | 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 等根级文件是兼容 forwarder。新代码应优先引用 src/core/*。
| 平面 | 作用 | 关键代码 |
|---|---|---|
| Analyzer | MCP stdio、HTTP API、存储、任务队列、静态工具、插件编排 | src/index.ts、src/core/* |
| Runtime Node | 隔离环境内的任务执行器 | packages/runtime-node/* |
| Windows Host Agent | 启停 Windows Sandbox 或 Hyper-V runtime | packages/windows-host-agent/* |
| Agent Gateway | Analyzer/runtime 连接管理和 MCP 代理 | src/rikune-agent-gateway.ts |
运行时模式:
disabled:禁用 runtime delegation。manual:连接指定 runtime endpoint。remote-sandbox:委托给 Windows Host Agent。auto-sandbox:Windows 原生 Analyzer 本地启动 Windows Sandbox。Docker/WSL analyzer 应使用 remote-sandbox,不要使用 auto-sandbox。
内置插件位于 src/plugins/<id>/,当前共 56 个。插件可以注册工具、声明依赖、暴露配置 schema、参与生命周期 hooks,并给 Docker 生成器提供安装元数据。
PLUGINS 控制启动时加载范围:
PLUGINS=* # 加载全部内置插件
PLUGINS=pe-analysis,yara # 只加载指定插件
PLUGINS=-dynamic # 加载除 dynamic 外的全部插件
运行时管理工具:
plugin.listplugin.enableplugin.disabletools.discovertool.readiness详见 docs/PLUGINS.md 和 packages/plugin-sdk/README.md。
启用 api.enabled 后,内嵌 file server 提供:
| Endpoint | 作用 |
|---|---|
/dashboard 和 / |
Dashboard UI |
/api/v1/health |
Liveness |
/api/v1/ready |
数据库、队列、runtime、插件 backend readiness |
/api/v1/events |
SSE events |
/api/v1/samples |
直接上传样本 |
/api/v1/samples/:id |
样本元数据 |
/api/v1/samples/:id/download |
原始样本下载 |
/api/v1/artifacts |
Artifact 列表 |
/api/v1/artifacts/:id |
Artifact 读取/删除 |
/api/v1/uploads/:token |
Durable upload session POST/status |
HTTP 层处理 API key 鉴权、rate limit、安全头和受限 CORS。
开发基线:
可选依赖由插件决定。用 system.health、system.setup.guide、tool.readiness 和 plugin.list 检查当前环境缺什么。
src/
index.ts 主入口
core/ MCP server、registry、executor、插件编排
core/tool-registry/ 内置 tool/prompt/resource 注册切片
tools/ 核心工具实现
workflows/ staged analysis、triage、reconstruction、review
analysis/ analysis run state 和后台任务 runner
plugins/ 56 个内置插件
persistence/ SQLite 和 workspace 持久化
sample/ 样本 finalization 和 workspace 检查
storage/ artifacts、uploads、retention
runtime-client/ Analyzer 侧 runtime delegation client
worker/ Ghidra 和 Python worker 编排
packages/
plugin-sdk/ 公共插件 SDK
shared/ runtime 和 tool contract 类型
runtime-node/ 隔离 runtime executor
windows-host-agent/ Windows Sandbox / Hyper-V host agent
workers/ Python worker 脚本和 YARA 规则
docker/ Docker 模板和 profile 产物
docs/ 架构、插件、runtime、部署文档
tests/ 单元、集成和 e2e 测试
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",
"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 root 下。Docker 安装脚本通常把这个 root 映射到宿主目录,例如 D:\Docker\rikune。
常见子目录:
samples/artifacts/uploads/cache/logs/样本工作区按 SHA-256 分桶,避免路径冲突并保持原始样本不可变。
Rikune 面向恶意样本和不可信二进制分析,但它本身不是万能隔离边界。
PolicyGuard 门控。详见 SECURITY.md 和 TROUBLESHOOTING.md。
MIT
$ claude mcp add rikune \
-- python -m otcore.mcp_server <graph>