Windows実行可能ファイルおよびバイナリ形式のリバースエンジニアリングのためのMCPサーバー。静的トリアージ、Ghidra支援による関数復元、プラグイン駆動のツール、アーティファクト管理、オプションの分離されたWindowsランタイム実行を組み合わせています。
Rikuneは、Windows実行ファイルと関連バイナリ形式をリバースエンジニアリングするためのMCPサーバーです。サンプル取り込み、静的トリアージ、Ghidraを使用した関数復元、プラグイン駆動の専門ツール、アーティファクト管理、オプションの分離Windowsランタイム実行をModel Context Protocolインターフェースの背後で組み合わせます。
現在のAI向けサーバーワークフローは、最小限のゲートウェイサーフェスを中心に構成されています。
workflow.search を使用して、ファイルタイプとユーザーの目標に一致するプロファイル、ワークフロー、専門機能をランク付けします。workflow.run action=request_upload を使用するか、workflow.search でレガシークライアントを非表示のサンプル取り込み互換ツールに誘導します。sample_id を使用して workflow.run action=start を実行します。workflow.run action=status と workflow.run action=promote を使用して、ステージングされた実行を監視および深化します。artifact.read を使用します。sample.*、、、、 は互換性または低レベル検査のために引き続き登録されていますが、新しいクライアントは 、、 を優先する必要があります。
workflow.analyze.*workflow.triagetools.discovertask.statusworkflow.searchworkflow.runartifact.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 を呼び出し、返されたアップロードURLに生のバイトをPOSTし、HTTPレスポンスから sample_id を読み取ります。sample.request_upload と sample.ingest は互換性ヘルパーであり、通常のAI向けパスではありません。
リモートアナライザまたは rikune-agent デプロイメントの場合、API_PUBLIC_BASE_URL、RIKUNE_API_PUBLIC_BASE_URL、または RIKUNE_ANALYZER_PUBLIC_URL をクライアントから到達可能なHTTP APIベース(例:http://159.195.136.226:18080)に設定します。アップロードセッションは、コンテナローカルの localhost URLではなく、公開された upload_url / status_url 値を返します。リモートゲートウェイは、古いアナライザからのlocalhostアップロードURLも、構成されたアナライザエンドポイントに正規化します。
HTTP APIが有効な場合、POST /api/v1/samples は非MCP統合でも引き続き利用可能です。正常な取り込みは sample_id を返します。インポート後は、ローカルパスではなく sample_id を使用して分析を実行してください。
sample_id を指定して workflow.run action=start を呼び出します。最初のステージは高速プロファイルを実行し、分析実行を作成または再利用します。返された 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.download などの互換性アーティファクトヘルパーreport.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 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/* |
| Runtime Node | サンドボックスまたはVM内の分離タスク実行 | 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アナライザは auto-sandbox ではなく remote-sandbox を使用する必要があります。
Rikuneには現在、src/plugins/<id>/ の下に111の組み込みプラグインが含まれています。プラグインは、ツールの登録、依存関係の宣言、構成スキーマの公開、ライフサイクルフックへの参加、Dockerメタデータの提供、workerBackend メタデータを介した境界のあるワーカーバックアップツールの宣言が可能です。
フロンティアワーカースイートは、計画専用ツールをトリアージおよびハンドオフサーフェスとして維持し、その横に明示的な実行ツールを追加します。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 は、workflow.search、plugin.list、tool.help、tool.readiness を介してワーカーコントラクトを公開します。tools.discover は低レベルの互換性ポータルとして残ります。検出と準備は受動的です: REstringer、JSIMPLIFIER、JSIR/CASCADE、GTIRB、Remill、Manifold、QBDI、GPUドライバー、Node/V8、ブラウザ、ランタイム計装を起動せずに、バックエンドメタデータとセットアップガイダンスを報告します。
Docker生成は、プラグインの systemDeps とワーカーパッケージングメタデータを直接読み取ります。デフォルトイメージは、REstringer、JSIMPLIFIER、Manifold、WABT、LIEF検証などの低リスク静的ラッパーをインストールします。オプションプロファイルは、JSIR/CASCADE、JSVMP、GTIRB、radare2、Tritonスタイルの静的ルートを有効にできます。ヘビー/ランタイム/GPU/ライセンス依存のバックエンドは、プロファイルゲート、BYO、またはサイドカーとして残ります。
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 # dynamicを除くすべて
ランタイムでは以下のMCPツールを使用します:
workflow.searchworkflow.runplugin.listplugin.enableplugin.disabletools.discover および tool.readiness(低レベル互換性/デバッグ検査用)docs/PLUGINS.md および packages/plugin-sdk/README.md を参照してください。
api.enabled が true の場合、組み込みファイルサーバーは以下を公開します:
| エンドポイント | 目的 |
|---|---|
/dashboard および / | ダッシュボードUI |
/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/ 単体、統合、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",
"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