理坤
Rikune是一个用于逆向工程Windows可执行文件和相关二进制格式的MCP服务器。它结合了样本采集、静态分类、Ghidra辅助功能恢复、插件驱动的专业工具、工件管理以及模型上下文协议接口后面的可选隔离Windows运行时执行。
当前服务器围绕分阶段分析管道进行组织:
- 导入样本
sample.ingest或请求一个持久的上传会话sample.request_upload. - 开始分析
workflow.analyze.start. - 投票与
workflow.analyze.status. - 通过以下方式促进更深层次的发展
workflow.analyze.promote. - 使用以下工具检查工件
artifact.*,analysis.context.get、报告工具或语义审查工作流。
workflow.triage 仍然可以作为兼容性和快速配置文件外观使用,但新客户应该更喜欢 workflow.analyze.start/status/promote.
Rikune提供什么
- 用于AI客户端和代理运行时的MCP stdio服务器。
- 可选的HTTP API和仪表板,用于上载、下载、运行状况检查、SSE事件和工件访问。
- 基于SHA-256的示例工作区,具有持久的原始文件、缓存目录、分析工件和上传会话。
- SQLite支持的持久性,用于样本、分析、作业、证据、工件、批处理、调试会话和调度遥测。
- 具有56个内置插件和外部插件发现的插件架构。
- 渐进式工具表面:核心工具始终可见,专业工具根据样品类型、发现或明确发现而暴露。
- PE、ELF、Mach-O、APK/DEX、Office、固件、字符串、YARA、SBOM、签名、打包器的静态分析和丰富。NET、Go、Rust等。
- Ghidra、Rizin、RetDec、angr、Capstone、Graphviz、麒麟、PANDA、Speakeasy、Wine、Frida和动态运行时集成(如有)。
- 可选的分析器/运行时拆分,用于通过Windows主机代理、Windows沙盒或Hyper-V VM实时执行Windows。
- 实时执行、网络访问、外部上传和批量反编译的策略门。
快速开始
静态Docker分析器
静态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运行时
混合模式在Docker中运行Analyzer,并将实时Windows工作委托给Windows Host Agent。Host Agent可以按需启动Windows沙盒或控制配置的Hyper-V VM。
.\rikune.ps1 install -Profile hybrid -InstallRuntime通过远程Windows运行时主机从Linux/macOS:
./rikune.sh install --profile hybrid --windows-host --windows-user 连接MCP客户端不会启动Windows沙盒或运行示例。实时运行时工作仅在工具明确请求时才开始,例如 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+。
主MCP流量
上传或摄入
使用以下选项之一:
sample.ingest具有服务器可读路径或bytes_b64.sample.request_upload创建上传URL,然后将原始字节POST到嵌入式HTTP服务器。POST /api/v1/samples当启用HTTP API时。
成功摄取会返回 sample_id.分析工具应使用 sample_id,导入后不是本地路径。
开始分析
呼叫 workflow.analyze.start 随着 sample_id第一阶段执行快速配置文件,并创建或重用分析运行。
推广阶段
使用 workflow.analyze.promote 要求更深入的阶段。管道目前对这些阶段进行建模:
fast_profileenrich_staticfunction_mapreconstructsemantic_reviewsdynamic_plandynamic_executesummarize
长时间运行的工作通过作业系统排队。投票与 workflow.analyze.status 和 task.status.
workflow.analyze.status 是主要的分段运行视图。大型历史阶段有效载荷可能会用顶级警告进行修剪;使用 artifact.read 对于完整的工件。 task.status 是原始队列/进程视图,包括 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
-> optional RuntimeClient or 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/* |
| 运行时节点 | 沙盒或VM内的隔离任务执行器 | packages/runtime-node/* |
| Windows主机代理 | 启动/停止Windows沙盒或Hyper-V运行时,并公开运行时控制端点 | packages/windows-host-agent/* |
| 代理网关 | 用于分析器/运行时连接管理的MCP网关/代理 | src/rikune-agent-gateway.ts |
运行时模式通过以下方式配置 runtime.mode 或环境变量:
disabled:无运行时委派。manual:连接到提供的运行时终结点。remote-sandbox:委派给Windows主机代理。auto-sandbox:Windows本机分析器在本地启动Windows沙盒。
Docker/WSL分析器应该使用 remote-sandbox,不 auto-sandbox.
插件系统
Rikune目前包括56个内置插件 src/plugins//插件可以注册工具、声明依赖关系、公开配置模式、参与生命周期挂钩并提供Docker元数据。
插件加载由控制 PLUGINS:
PLUGINS=* # all built-ins
PLUGINS=pe-analysis,yara # selected plugins
PLUGINS=-dynamic # all except dynamic在运行时使用这些MCP工具:
plugin.listplugin.enableplugin.disabletools.discovertool.readiness
HTTP API
当 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层处理。
先决条件
最低开发基线:
- Node.js 22+
- npm
- Python 3.11+推荐用于worker和分析脚本
- Docker 20.10+和Docker Compose v2 for Docker配置文件
- Java 21+用于现代Ghidra版本
- Ghidra用于反编译器支持的函数分析
- Windows 10/11 Pro、Enterprise或同等VM支持Windows沙盒和Hyper-V运行时路径
可选工具是特定于插件的。跑 system.health, system.setup.guide, tool.readiness,以及 plugin.list 查看给定环境中缺少什么。
项目布局
src/
index.ts main server entry
core/ MCP server, registry, executor, plugin orchestration
core/tool-registry/ built-in tool/prompt/resource registration slices
tools/ core tool implementations
workflows/ staged analysis, triage, reconstruction, review workflows
analysis/ run state and background task runner
plugins/ 56 built-in plugins
persistence/ SQLite and workspace persistence
sample/ sample finalization and workspace inspection
storage/ artifacts, uploads, retention
runtime-client/ analyzer-side runtime delegation client
worker/ Ghidra and Python worker orchestration
packages/
plugin-sdk/ public plugin SDK
shared/ runtime and tool contract types
runtime-node/ isolated runtime executor
windows-host-agent/ Windows Sandbox / Hyper-V host agent
workers/ Python worker scripts and YARA rules
docker/ generated Dockerfile templates and profile files
docs/ architecture, plugin, runtime, deployment docs
tests/ unit, integration, and e2e 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:runtimeMCP客户端配置
本地构建:
{
"mcpServers": {
"rikune": {
"command": "node",
"args": ["D:/Playground/windows-exe-decompiler-mcp-server/dist/index.js"],
"env": {
"API_ENABLED": "true",
"API_PORT": "18080",
"PLUGINS": "*"
}
}
}
}Docker标准:
{
"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/- SQLite数据库文件
- 审计日志jsonl
示例工作区采用SHA-256进行分组,以避免路径冲突并保留不可变的原始数据。
安全边界
Rikune专为恶意软件和不可信的二进制分析而设计,但它本身并不是一个神奇的安全边界。
- 静态Docker模式应该是常规分析的默认模式。
- 实时Windows执行必须在Windows沙盒或隔离的VM内进行。
- 运行时节点拒绝不安全的启动,除非明确覆盖。
- 危险行为受到保护
PolicyGuard. - 命令执行使用结构化流程API和分配的命令验证。
- 不要在运行时隔离模型之外的主机工作站上运行未知样本。
文档地图
- 安装.md:Docker安装指南中文版。
- 部署.md:部署配置文件和运行时拓扑。
- docs/ARCHITECTURE.md:当前代码架构。
- docs/PLUGINS.md:插件列表、SDK概念、生命周期、发现。
- docs/ANALYSIS-RUNTIME.md:分阶段运行时和分析执行模型。
- docs/ASYNC-JOB-PATTERN.md:异步作业和轮询模式。
- docs/MIGRATION-ASYNC.md:分阶段异步工作流的迁移说明。
- docs/DYNAMIC-RUNTIME-ROADMAP.md:运行时路线图和状态。
- 贡献.md:发展和贡献流。
- 软件包/插件sdk/README.md:插件创作包。
- workers/README.md:Python工人合同。
许可证
麻省理工学院
