mcpField
R
Reversecore_mcp

Reversecore_mcp

ローカル
github.com/sjkim1127セキュリティ2142 週間前に更新

Reversecore_mcp について

Reversecore_mcpはセキュリティ分析向けのMCPサーバーで、AIアシスタントにリバースエンジニアリング、マルウェア分析、脆弱性調査、デジタルフォレンジック、ソース監査のツールを提供します。複数の分析バックエンドを構造化ツールにまとめ、自然言語を使った分析フローを支援します。

主な機能

  1. 01静的解析と逆アセンブル
  2. 02マルウェアとYARAの分析
  3. 03シンボリック実行と汚染追跡
  4. 04デジタルフォレンジックとPCAP分析
  5. 05ソースコードの脆弱性スキャン
  6. 06MITRE ATT&CKレポート生成

活用シーン

  1. 01マルウェア検体の分析とIOC抽出
  2. 02バイナリの脆弱性兆候の調査
  3. 03メモリ、ディスク、ネットワーク証拠の調査
  4. 04PythonおよびC/C++ソースの監査

MCP 対応

stdioまたはHTTP/SSE経由で対応クライアントに接続し、177の分析ツール、ガイド付き分析プロンプト、MCPリソースを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"Reversecore_MCP": {
"command": "uvx",
"args": [
"reversecore-mcp"
]
}
}
}
起動コマンドuvx reversecore-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypireversecore-mcp3.0.5
ocighcr.io/sjkim1127/reversecore_mcp:3.0.5

ツール

114

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
languageanyいいえ省略可能な言語ヒント(例:'c'、'python')。None の場合は、拡張子から推定します。
file_pathstringはいソースコードファイルへのパス。

詳細

Reversecore MCP

Reversecore MCP

Model Context Protocol による AI を活用したリバースエンジニアリングとセキュリティ分析

Claude や Cursor などの AI アシスタントが、自然言語を通じてリバースエンジニアリング、マルウェア分析、脆弱性調査、デジタルフォレンジック、ソースコード監査を実行できるようにする MCP サーバーです。


CI/CD Python License: MIT Tests Coverage FastMCP PyPI Docker OpenSSF Scorecard HVTrust

Watch the Demo SafeSkill Verified


目次


Reversecore MCP とは?

Reversecore MCP は、177 個の分析ツールを単一のインターフェースにまとめ、AI アシスタントが自然言語を通じて呼び出せるようにする、Model Context Protocol サーバーです。

複数のツールのコマンドライン構文を覚える代わりに、実行したい内容を説明するだけです。

"Decompile the main function of this malware sample, extract all network IOCs,
 map the behavior to MITRE ATT&CK, and generate a triage report."

AI アシスタントは、これをツール呼び出しに分割します。

r2_decompile("sample.exe", "main")
  → extract_iocs("sample.exe")
    → add_mitre_technique(technique_id="T1071.001", ...)
      → create_analysis_report(template_type="quick_triage")

各ツールは、型付きデータを含む構造化された ToolResult(ToolSuccess または ToolError)を返します。AI はそのデータを使って推論し、後続のクエリに連鎖させたり、ユーザー向けに表示したりできます。

対応範囲
分野実行できること
静的解析逆アセンブル、逆コンパイル(r2ghidra)、バイナリ解析(LIEF)、パッカー検出(DIE)、機能検出(CAPA)、文字列抽出、ファームウェアスキャン(binwalk)
動的解析とシンボリック解析ESIL エミュレーション、angr シンボリック実行、テイント解析、ファジングハーネス生成
マルウェア解析IOC 抽出、YARA スキャン、休眠バックドア検出、適応型ワクチン生成、自律型脆弱性ハンティング
脆弱性調査危険な API の検出、ROP ガジェットの発見、ヒープエクスプロイト解析、クラッシュのトリアージ、PoC 生成
デジタルフォレンジックメモリフォレンジック(Volatility3)、PCAP 解析(Scapy)、ディスクフォレンジック(Sleuth Kit)、アーティファクトの相関分析
ソースコード監査Python AST スキャン、C/C++ 正規表現パターンスキャン
レポート作成MITRE ATT&CK とのマッピングを含むセッションベースのレポート、SIGMA ルール生成、VEX レポート、メール配信

アーキテクチャ

AI Client (Claude / Cursor / any MCP-compatible client)
        │  MCP Protocol (stdio or HTTP/SSE)
        ▼
┌──────────────────────────────────────────────────────┐
│                   FastMCP 3.4.4 Server               │
│          177 registered tools · Fully async          │
│                  Python 3.10–3.12                    │
├────────────────────┬─────────────────────────────────┤
│   Guided Prompts   │  Dynamic Resources              │
│  (22 analysis      │  (11 URI-based: per-binary      │
│   modes)           │   strings, IOCs, ASM, CFG, …)   │
├────────────────────┴─────────────────────────────────┤
│                  Core Infrastructure                 │
│  Config · Security · Validators · Exceptions (17)    │
│  R2 Pool · Metrics · Memory (SQLite) · Task Queue    │
│  MITRE Mapper · Evidence Engine · Resilience Layer   │
│  Arch Registry (x86/ARM/MIPS/RISC-V/PPC)            │
│  Result Cache (SHA256) · Analysis Cache (Redis+SQL)  │
│  SAST (Python AST + C/C++ Regex) · Plugin System     │
├──────────────────────────────────────────────────────┤
│                 Analysis Engines                     │
│  Radare2 6.0.4     │  YARA 4.3.1 · LIEF · Capstone  │
│  r2ghidra           │  CAPA · angr · Qiling          │
│  Volatility3 · Scapy│ DIE · Binwalk · Sleuth Kit    │
│  pwntools · ROPgadget│ Keystone (assembler)          │
└──────────────────────────────────────────────────────┘

サーバーは Python 3.10~3.12 に対応しています。オプションの angr シンボリック実行エンジンは、セキュリティ上問題のない互換リリースが利用可能な Python 3.12 以降にインストールされます。Python 3.10 および 3.11 へのインストールでは angr は省略されます。

コアインフラストラクチャ(37 モジュール)

reversecore_mcp/core/ ディレクトリには、すべてのツールの基盤となる共有インフラストラクチャが含まれています。

モジュール役割
config.py34 個以上の環境変数に対応した Pydantic BaseSettings
security.py入力のサニタイズ、コマンド引数の検証
validators.pyTOCTOU の軽減とシンボリックリンクの解決を伴う、ファイルおよびバイナリパスの検証
r2_pool.pyサイズを設定可能な、スレッドセーフな Radare2 接続プール
r2_helpers.pyRadare2 の構造化出力の解析
metrics.pyツールごとの実行時間、呼び出し回数、エラー率、キャッシュ統計
memory.pyセッションをまたいで解析結果を保持する、非同期 SQLite ベースの AI メモリストア
mitre_mapper.pyMITRE ATT&CK 手法 ID のマッピングエンジン
evidence.py証拠の分類システム:OBSERVED、INFERRED、POSSIBLE
resilience.py再試行、サーキットブレーカー、タイムアウトのデコレータパターン
task_queue.pyRedis + arq によるバックグラウンドタスクキュー
extension_registry.pyプラグインの登録とライフサイクル管理
arch_registry.pyマルチアーキテクチャのマッピング(x86、x86_64、ARM32、ARM64、MIPS、RISC-V、PPC → r2 のアーキテクチャ/ビット数/レジスター)
result_cache.pySHA256 ベースのツール結果キャッシュデコレータ(@cache_tool_result)
analysis_cache.pyマルチレベルの逆コンパイルキャッシュ(L1:Redis、L2:SQLite)
result.pyToolSuccess / ToolError Pydantic モデル
exceptions.pyRCMCP-E* エラーコードを持つ 17 個の例外クラス
decorators.py@log_execution、@track_metrics
error_handling.py@handle_tool_errors デコレータ
error_formatting.py構造化されたエラーレスポンスのフォーマット
execution.pyタイムアウトと出力制限に対応した安全なサブプロセス実行
command_spec.pyサブプロセス呼び出し用のコマンド仕様
loader.pyツールモジュールの動的ローダー
plugin.pyプラグインの基底クラス
extension.py拡張機能の基底クラス
container.pyコンテナー/サンドボックスの実行サポート
audit.py監査ログ
binary_cache.pyバイナリファイルのキャッシュ
json_utils.pyorjson による JSON シリアライズ(標準ライブラリの json より 3~5 倍高速)
logging_config.pyLoguru ベースの構造化ログ
report_generator.pyレポートレンダリングエンジン(Markdown、xhtml2pdf による PDF)
resource_manager.pyMCP リソースのライフサイクル管理
sast/python_ast_scanner.pyPython AST ベースの脆弱性スキャナー
sast/regex_scanner.pyC/C++ 正規表現ベースの脆弱性スキャナー
sast/rule_manager.pySAST ルールの読み込みと管理

ツールカタログ(177 ツール)

📖 正式版ツールカタログおよびパラメーターリファレンス(151 ツール) 📊 ツールプロファイルのフットプリントとコンテキストのベンチマークマトリクス

すべてのツールは、型付きの data を含む ToolSuccess、または RCMCP-E* エラーコードを含む ToolError のいずれかとして、構造化された ToolResult を返します。ツールは、5 つのモジュール型実行プロファイル(full、static、malware、forensics、vuln-research)にわたる 11 のドメインプラグインに整理されています。

プロファイル登録ツール数スキーマサイズfull に対する LLM コンテキストの削減率推奨ドメイン
full153116.8 KBベースライン(0%)エンタープライズ向けリバースエンジニアリング完全スイート
vuln-research10573.3 KB-37.2%(約10,800トークン)ファジング、ASan クラッシュのトリアージ、CVE 探索、エクスプロイト調査
static9967.7 KB-42.0%(約12,200トークン)逆アセンブル、逆コンパイル(r2ghidra)、LIEF、静的トリアージ
malware6762.8 KB-46.2%(約13,500トークン)脅威のトリアージ、YARA スキャン、難読化解除、解析対策
forensics5737.0 KB-68.4%(約19,500トークン)メモリフォレンジック(Volatility3)、ネットワーク PCAP(Scapy)、ディスク

🔍 静的解析プラグイン(24 ツール)
#ツールバックエンド説明
1run_stringsstrings CLI最小文字列長を設定できる ASCII/Unicode 文字列の抽出
2run_binwalkBinwalk埋め込みシグネチャとファイルシステムを対象としたファームウェアの詳細スキャン
3run_binwalk_extractBinwalkbinwalk で検出した埋め込みファイルの抽出
4parse_binary_with_liefLIEFPE/ELF/Mach-O のヘッダー、セクション、インポート/エクスポート、TLS の完全な解析
5detect_packerDIEパッカー/コンパイラーの簡易検出
6detect_packer_deepDIE(diec)Detect It Easy による詳細なパッカー/プロテクター解析
7run_capaCAPA(Mandiant FLARE)機能の検出 — 「データを暗号化する」「永続化を作成する」など
8run_capa_quickCAPAルールのサブセットによる機能の簡易スキャン
9generate_signatureRadare2識別用のバイナリシグネチャを生成
10generate_yara_ruleRadare2 + YARAバイナリパターンから YARA 検出ルールを生成
11generate_advanced_yara_ruleRadare2 + YARA動作指標を含む高度な YARA ルールを生成
12scan_for_versionsLIEF + stringsバイナリに埋め込まれたバージョン文字列をスキャン
13extract_rtti_infoRadare2C++ RTTI(実行時型情報)を抽出
14diff_binariesRadare22 つのファイルバージョン間のセマンティックなバイナリ差分を取得
15analyze_variant_changesRadare2バイナリの亜種間の変更を分析
16match_librariesRadare2関数フィンガープリントによって静的リンクされたライブラリを特定
17patch_diff_1dayRadare2 + ヒューリスティクス1-day 脆弱性調査向けのパッチ差分を自動分析
18analyze_patch_diff_autoRadare2 + 推論パッチから脆弱性を自動推論
19emulate_binaryRadare2 ESILレジスター/メモリーのトレース付きコードエミュレーション
20generate_fuzzing_harnessQiling + AFL++特定の関数を対象とするファジングハーネスを生成
21run_fuzzing_campaignAFL++クラッシュの収集を伴うファジングキャンペーンを実行
22triage_crashGDBクラッシュの解析とエクスプロイト可能性の評価
23verify_path_and_get_argsangrシンボリック実行 — パスの到達可能性を証明し、具体的な入力を算出
24taint_traceRadare2 + angrソースからシンクまでのデータフロー汚染解析

🔐 ソースコード監査プラグイン(1 ツール)
#ツールバックエンド説明
25audit_source_codeAST + Regex危険なパターンを対象とする Python AST スキャンと C/C++ 正規表現スキャン

🛠️ 共通ユーティリティプラグイン(20 個のツール)

ファイル操作(5 個のツール)

#ツール説明
26run_fileファイルの種類、アーキテクチャ、コンパイラーのフィンガープリントを特定します
27copy_to_workspaceファイルを分析ワークスペースにコピーします
28create_directoryワークスペースにディレクトリを作成します
29list_workspaceワークスペース内のすべてのファイルを一覧表示します
30scan_workspaceファイルのメタデータを含む、ワークスペース全体のスキャンを実行します

パッチの説明(1 個のツール)

#ツール説明
31explain_patchバイナリパッチを自然言語で説明します

アセンブラー(1 個のツール)

#ツールバックエンド説明
32assemble_instructionsKeystone命令をマシンコードにアセンブルします(x86、ARM、MIPS など)

AI メモリ管理(11 個のツール)

これらのツールを使うと、非同期 SQLite データベースを使用して、AI が分析セッションをまたいで調査結果を保存し、呼び出せます。

#ツール説明
33create_memory_session分析用の新しいメモリセッションを開始します
34store_analysis_findingタグを付けて分析結果を保存します
35query_analysis_memoriesクエリを使って過去の調査結果を検索します
36get_binary_analysis_context特定のバイナリに関するすべてのコンテキストを取得します
37tag_analysis_sessionセッションを整理するためにタグを追加します
38search_memories_by_tagタグからセッションや調査結果を検索します
39delete_analysis_sessionセッションとその調査結果を削除します
40cleanup_expired_sessions指定した期間より古いセッションを削除します
41list_analysis_sessionsすべてのアクティブなセッションを一覧表示します
42export_memory_storeすべてのメモリを移植可能な形式でエクスポートします
43import_memory_storeエクスポートファイルからメモリをインポートします

サーバー監視(2 個のツール)

#ツール説明
44get_server_health稼働時間、メモリ使用量、読み込まれたツール、Python のバージョンを取得します
45get_tool_metricsツールごとの呼び出し回数、平均実行時間、エラー率、キャッシュヒット/ミスを取得します

⚙️ Radare2 & r2ghidra プラグイン(30 個のツール)

Radare2 のすべてのツールは、r2pipe セッションを自動管理するスレッドセーフな接続プール(r2_pool.py)を使用します。

#ツール説明
46Radare2_open_fileRadare2 でバイナリファイルを開く
47Radare2_close_fileRadare2 セッションを閉じる
48Radare2_list_open_files現在開いているファイルを一覧表示する
49Radare2_analyze_binary完全な自動解析(aaa)を実行する
50Radare2_list_functions検出されたすべての関数を一覧表示する
51Radare2_disassemble_function特定の関数を逆アセンブルする
52Radare2_disassemble_address特定のアドレスを逆アセンブルする
53Radare2_decompile_functionr2ghidra 経由でデコンパイルする(r2 に組み込まれた Ghidra エンジン。JVM は不要)
54Radare2_list_exportsエクスポートされたシンボルを一覧表示する
55Radare2_list_importsインポートされた関数を一覧表示する
56Radare2_list_sectionsエントロピーを含めてバイナリのセクションを一覧表示する
57Radare2_list_stringsバイナリ内で見つかった文字列を一覧表示する
58Radare2_find_cross_references関数呼び出しとデータ参照を追跡する
59Radare2_search_bytesバイナリ内のバイトパターンを検索する
60Radare2_get_binary_infoバイナリのメタデータ(アーキテクチャ、形式、エンディアン)を取得する
61Radare2_execute_commandRadare2 のコマンドをそのまま実行する
62Radare2_esil_emulate特定のアドレスで ESIL エミュレーションを実行する
63Radare2_get_hexdump仮想アドレスのヘックスダンプを取得する
64Radare2_get_cfg_data制御フローグラフのデータを抽出する
65Radare2_generate_cfg_pngCFG を PNG 画像として生成する
66Radare2_generate_callgraph関数呼び出しグラフを生成する
67Radare2_recover_structuresC 構造体を自動復元し、アノテーションデータベースに保存する
68Radare2_decompile_with_r2ghidraキャッシュ機能付きの高品質な C デコンパイル
69Radare2_annotate_binaryバイナリにアノテーションを追加する
70Radare2_get_annotationsアノテーションを取得する
71Radare2_export_annotationsアノテーションをファイルにエクスポートする
72Radare2_import_annotationsアノテーションをファイルからインポートする
73Radare2_detect_crypto_constants暗号定数(AES S-box など)を検出する
74Radare2_find_gadgetsROP/JOP ガジェットを見つける
75Radare2_calculate_entropyセクションごとのエントロピーを計算する

🦠 マルウェア解析プラグイン(9 個のツール)
#ツールバックエンド説明
76dormant_detectorRadare2 + ヒューリスティック隠されたバックドア、孤立関数、時限爆弾、ロジック爆弾を見つける
77adaptive_vaccineYARA + Radare2脅威を無効化するための検出用 YARA ルールとバイナリパッチを生成する
78vulnerability_hunterRadare2 + 解析危険な API パターン(strcpy、sprintf)と ROP ガジェットチェーンを検出する
79extract_iocs正規表現 + LIEFIP、URL、ドメイン、ハッシュ、レジストリキー、暗号資産アドレスを抽出する
80run_yaraYARAカスタムルールファイルと組み込みルールセットでスキャンする
81generate_poc_exploitpwntools概念実証(PoC)エクスプロイトコードを生成する
82build_rop_chainROPgadget + pwntoolsROP チェーンを自動構築する
83autonomous_vuln_huntRadare2 + angr自律型の脆弱性探索パイプライン
84analyze_heap_exploitRadare2 + ヒューリスティックヒープ悪用の解析(UAF、二重解放、オーバーフロー)

🕵️ デジタルフォレンジックプラグイン(22 ツール)

メモリフォレンジック(6 ツール)

#ツールバックエンド説明
85memory_analyzeVolatility3メモリダンプを完全に解析
86memory_list_processesVolatility3メモリダンプから実行中のプロセスを一覧表示
87memory_detect_injectionsVolatility3プロセスメモリ内のコードインジェクションを検出
88memory_extract_stringsVolatility3プロセスメモリから文字列を抽出
89memory_dump_moduleVolatility3メモリからロード済みモジュールをダンプ
90memory_list_symbolsVolatility3メモリ内のシンボルを一覧表示

ディスクフォレンジック(6 ツール)

#ツールバックエンド説明
91disk_list_partitionSleuth Kitディスクパーティションを一覧表示
92disk_list_filesSleuth Kitディスクイメージ内のファイルを一覧表示
93disk_recover_deletedSleuth Kit削除されたファイルを復元
94disk_analyze_mftSleuth KitNTFS マスターファイルテーブルを解析
95disk_extract_fileSleuth Kitディスクイメージからファイルを抽出
96disk_hash_verifySleuth Kitハッシュを使用してファイルの整合性を検証

ネットワークフォレンジック(5 ツール)

#ツールバックエンド説明
97pcap_analyzeScapyPCAP 解析:プロトコルの内訳、異常
98pcap_list_connectionsScapyすべてのネットワーク接続を一覧表示
99pcap_extract_dnsScapyDNS クエリと応答を抽出
100pcap_extract_c2ScapyC2 通信の可能性を特定
101pcap_reconstruct_streamScapyTCP ストリームを再構築

アーティファクト分析(5 ツール)

#ツールバックエンド説明
102artifact_collectCustom parsersブラウザー履歴、レジストリハイブ、イベントログ、プリフェッチを収集
103artifact_correlate_iocCustom parsersアーティファクトを既知の IOC と相関付け
104artifact_generate_yaraYARAアーティファクトのパターンから YARA ルールを生成
105artifact_timelineCustom parsers複数のアーティファクトソースからタイムラインを作成
106artifact_reportCustom parsersアーティファクト分析レポートを生成

📝 レポート生成プラグイン(14 ツール)
#ツール説明
107get_system_timeサーバーのタイムスタンプを取得(日付の AI による幻覚を防止)
108set_timezoneレポートのタイムゾーンを設定
109get_timezone_info現在のタイムゾーン情報を取得
110start_report_session一意の ID を持つ時間計測付き分析セッションを開始
111end_report_sessionセッションを終了:所要時間を計算し、IOC/ATT&CK リストをロック
112get_report_session_statusセッションのステータスを確認
113list_report_sessionsすべての進行中/完了済みセッションを一覧表示
114add_iocライブセッション中に IOC を収集してタグ付け
115add_analysis_noteカテゴリ別のメモ(発見事項、警告、振る舞い)を追加
116add_mitre_techniqueMITRE ATT&CK のテクニック ID を記録
117set_severityセッションの重大度を設定(低/中/高/重大)
118create_analysis_report4 つのモードでレポートを作成:full_analysis、quick_triage、ioc_summary、executive_brief
119generate_vex_reportVEX(Vulnerability Exploitability eXchange)レポートを生成
120generate_sigma_ruleSIGMA 検出ルールを生成

ガイド付き分析プロンプト(22 モード)

プロンプトは、構造化されたペルソナ、段階的なツール使用手順、証拠分類ルールを AI に設定する、事前構築済みの分析ワークフローです。AI クライアントでプロンプト名を指定すると有効になります。

マルウェア解析(9 個のプロンプト)
プロンプトユースケース
full_analysis_mode6 フェーズの包括的な解析:トリアージ → 逆アセンブル → 挙動 → ネットワーク → 永続化 → レポート
malware_analysis_mode脅威の分類を含む、的を絞ったマルウェア解析
basic_analysis_mode初期評価と迅速な判定のための迅速なトリアージ
apt_hunting_modeAPT に特化したハンティング:ラテラルムーブメント、永続化、データ流出
malware_defense_mode防御を重視:検出ルールと緩和策を生成
unpacking_modeパッキング/難読化(Themida、VMProtect、UPX)を解析して回避
c2_extraction_modeC2 通信インフラストラクチャを抽出して解析
ransomware_triage_modeランサムウェアに特化したトリアージ:暗号化の解析、鍵回復の評価
code_similarity_modeバイナリのコード類似性と共通系統を比較
セキュリティ研究(6 個のプロンプト)
プロンプトユースケース
vulnerability_research_modeバグハンティング:バッファーオーバーフロー、UAF、コマンドインジェクション
crypto_analysis_mode暗号実装の解析と脆弱性の検出
firmware_analysis_modeIoT/組み込みファームウェア:binwalk による抽出、UART 文字列、ハードコードされた認証情報
patch_analysis_modeセキュリティパッチの解析と回帰テスト
source_code_audit_modeソースコードのセキュリティ監査(Python、C、C++)
autonomous_vuln_hunt_mode自律型の脆弱性ハンティングパイプライン
CVE 研究とエクスプロイト開発(5 個のプロンプト)
プロンプトユースケース
taint_analysis_modeデータフローのテイント解析:ソースからシンクへの経路を自動検出
heap_exploit_modeヒープエクスプロイトの解析と PoC の生成
fuzzing_modeファジングキャンペーンのセットアップとクラッシュのトリアージ
patch_diff_auto_mode1-day 脆弱性研究向けのパッチ差分を自動生成
cve_discovery_pipeline_modeパッチ差分から動作するエクスプロイトまでの、CVE 発見パイプライン全体
その他(2 個のプロンプト)
プロンプトユースケース
game_analysis_modeゲームクライアントの解析:アンチチート検出、プロトコル RE、メモリ検査
report_generation_modeMITRE ATT&CK の手法マッピングを含む、構造化されたセッションワークフロー

プロンプトの仕組み: 各プロンプトは、構造化された解析担当者として AI に役割を設定します。AI が次に進む前に立ち止まって評価する必要がある Chain-of-Thought 推論チェックポイントと、推測を事実として述べることを防ぐ証拠の分類ルールが含まれています。すべての調査結果には、OBSERVED(直接確認済み)、INFERRED(静的解析から論理的に導出)、POSSIBLE(さらなる検証が必要)のいずれかのラベルを付ける必要があります。


MCP リソース(11 個の URI)

リソースは読み取り専用のデータエンドポイントであり、AI クライアントは URI テンプレートを通じてアクセスできます。明示的なツール呼び出しを必要とせずに構造化データを提供し、ツールを補完します。

静的リソース
URI説明
reversecore://guideファイルパスのルールとベストプラクティスを含む、ツール使用ガイド
reversecore://guide/structures構造体の復元と相互参照解析に関する技術ガイド
reversecore://tools登録済みの 177 個すべてのツールに関する完全なドキュメント
reversecore://logsアプリケーションログ(直近 100 行)
動的リソース(バイナリごとの仮想ファイルシステム)

これらの URI はバイナリごとに解決され、必要に応じて対応する分析ツールを実行します。

URI テンプレート説明
reversecore://{filename}/stringsバイナリからすべての文字列を抽出します
reversecore://{filename}/iocsIOC(IP、URL、メールアドレス、ハッシュ)を抽出します
reversecore://{filename}/func/{address}/code関数の逆コンパイル済み疑似 C コード
reversecore://{filename}/func/{address}/asm関数の逆アセンブル結果
reversecore://{filename}/func/{address}/cfgMermaid 形式の制御フローグラフ
reversecore://{filename}/functionsバイナリ内のすべての関数の一覧
reversecore://{filename}/dormant_detectorDormant Detector の分析結果

クイックスタート

オプション 1 — PyPI(最も簡単)
pip install reversecore-mcp
reversecore-mcp

前提条件: Radare2 をシステムにインストールしておく必要があります(r2 --version)。YARA は yara-python 経由で自動的にインストールされます。

オプション 2 — Docker(すべての機能を利用する場合におすすめ)

すべての分析エンジン(Radare2、r2ghidra、YARA、Binwalk、Sleuth Kit、GDB など)があらかじめインストールされています。

docker run -i --rm \
  -v /path/to/your/samples:/app/workspace \
  -e REVERSECORE_WORKSPACE=/app/workspace \
  -e MCP_TRANSPORT=stdio \
  ghcr.io/sjkim1127/reversecore_mcp:latest
オプション 3 — ソースからビルド(Docker Compose)
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
./scripts/run-docker.sh        # auto-detects Intel / Apple Silicon

または、手動で実行します。

docker compose --profile x86 up -d    # Intel/AMD
docker compose --profile arm64 up -d  # Apple Silicon (M1/M2/M3)
オプション 4 — Python(ローカル開発)
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python -m reversecore_mcp.server

ローカルモードの前提条件: Radare2 をシステムにインストールしておく必要があります(r2 --version)。個々のツールバックエンド(YARA、LIEF、Capstone など)は pip 経由でインストールします。フォレンジック機能をすべて利用するには、Volatility3、Scapy、Sleuth Kit も必要です。


AI クライアントへの接続

IDE クライアントの設定(例:~/.cursor/mcp.json または claude_desktop_config.json)にサーバー設定を追加します。

⚡ オプション 1:Docker Exec モード(おすすめ)

Docker Compose でコンテナを実行している場合、このモードでは stdio を実行中のコンテナに直接接続します。起動時の遅延がなく、メモリが保持され、すべてのツールを利用できます。

{
  "mcpServers": {
    "Reversecore_MCP": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "-e",
        "MCP_TRANSPORT=stdio",
        "reversecore-mcp-arm64",
        "python",
        "-m",
        "reversecore_mcp.server"
      ]
    }
  }
}

Intel/AMD をご利用の場合は、reversecore-mcp-arm64 を reversecore-mcp に置き換えてください。


🌐 オプション 2:SSE HTTP モード

ネットワーク経由でストリーミングする場合(Server-Sent Events):

{
  "mcpServers": {
    "Reversecore_MCP": {
      "url": "http://localhost:8000/mcp/sse"
    }
  }
}

📦 オプション 3:Stdio モード(オンデマンド Docker)

セッションごとに、新しい独立したコンテナを起動します。

🍎 macOS
{
  "mcpServers": {
    "reversecore": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/Users/YOUR_USERNAME/samples:/app/workspace",
        "-e", "REVERSECORE_WORKSPACE=/app/workspace",
        "-e", "MCP_TRANSPORT=stdio",
        "ghcr.io/sjkim1127/reversecore_mcp:latest"
      ]
    }
  }
}
🐧 Linux
{
  "mcpServers": {
    "reversecore": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/home/YOUR_USERNAME/samples:/app/workspace",
        "-e", "REVERSECORE_WORKSPACE=/app/workspace",
        "-e", "MCP_TRANSPORT=stdio",
        "ghcr.io/sjkim1127/reversecore_mcp:latest"
      ]
    }
  }
}
🪟 Windows
{
  "mcpServers": {
    "reversecore": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "C:/samples:/app/workspace",
        "-e", "REVERSECORE_WORKSPACE=/app/workspace",
        "-e", "MCP_TRANSPORT=stdio",
        "ghcr.io/sjkim1127/reversecore_mcp:latest"
      ]
    }
  }
}

⚠️ 重要 — Docker 内のファイルパス

ローカルフォルダーは、コンテナ内の /app/workspace にマウントされます。 ファイルを指定する際は、ローカルのフルパスではなく、必ずファイル名のみを使用してください。

❌ 誤り✅ 正しい
r2_decompile("/Users/john/samples/mal.exe")r2_decompile("mal.exe")

設定

すべての設定は、環境変数または .env ファイル(.env.example を参照)で指定できます。設定は REVERSECORE_ プレフィックスを使用する Pydantic BaseSettings で管理されます。

コア設定
変数デフォルト説明
MCP_TRANSPORTstdioトランスポートモード:stdio または http
REVERSECORE_WORKSPACE./ (cwd)分析ワークスペースのディレクトリ
REVERSECORE_READ_DIRS""読み取り専用の追加ディレクトリのカンマ区切りリスト
REVERSECORE_STRICT_PATHSfalse警告ではなく、パスが見つからない場合にエラーを発生させます
REVERSECORE_STRUCTURED_ERRORSfalseエラーコード付きの構造化エラーレスポンスを有効にします
REVERSECORE_DEFAULT_TOOL_TIMEOUT120ツール実行のデフォルトタイムアウト(秒)
REVERSECORE_MAX_OUTPUT_SIZE10000000ツールの最大出力サイズ(バイト)
REVERSECORE_FORENSICS_MAX_RECOVERED_BYTES5000000001 つのディスク inode から復元する最大バイト数
HTTP モードの設定
変数デフォルト説明
MCP_HOST0.0.0.0バインドするホストインターフェース(API キーが設定されていない場合、自動的に 127.0.0.1 に上書きされます)
MCP_PORT8000HTTP サーバーのポート
MCP_API_KEY(未設定)HTTP 認証用の API キー(X-API-Key または Authorization: Bearer)
REVERSECORE_RATE_LIMIT601 分あたりの最大リクエスト数(HTTP モードのみ、slowapi 経由)
MAX_UPLOAD_SIZE100000000アップロードの最大サイズ(デフォルトは 100 MB)
FILE_RETENTION_MINUTES1440アップロードファイルの保持期間(デフォルトは 24 時間)
Radare2 の設定
変数デフォルト説明
REVERSECORE_R2_POOL_SIZE3プール内の Radare2 接続数
REVERSECORE_R2_POOL_TIMEOUT30プールから接続を取得する際のタイムアウト
REVERSECORE_R2_EXTENSIONS""r2 拡張クラスのカンマ区切りリスト(module:ClassName)
REVERSECORE_GHIDRA_MAX_PROJECTS3キャッシュする r2ghidra デコンパイラプロジェクトの最大数
REVERSECORE_GHIDRA_EXTENSIONS""Ghidra 拡張クラスのカンマ区切りリスト
MAX_EMULATION_INSTRUCTIONS1000ESIL エミュレーション命令の最大数
サンドボックスの設定
変数デフォルト説明
REVERSECORE_SANDBOX_ENABLEDfalse動的解析ツールでのサンドボックス実行を有効にします
REVERSECORE_SANDBOX_MODEautoサンドボックスモード:auto、host、container、disabled
REVERSECORE_SANDBOX_DOCKER_IMAGEreversecore-sandbox:latestサンドボックス実行用の Docker イメージ
REVERSECORE_SANDBOX_CPU_LIMIT1.0サンドボックスコンテナの CPU コア制限
REVERSECORE_SANDBOX_MEMORY_LIMIT512mサンドボックスコンテナのメモリ制限
REVERSECORE_SANDBOX_PIDS_LIMIT100サンドボックスコンテナの PID 制限
REVERSECORE_SANDBOX_USERnobodyサンドボックス実行用の非 root ユーザー
ストレージとキュー
変数デフォルト説明
REDIS_URLredis://localhost:6379/0タスクキューと結果キャッシュ用の Redis URL
MEMORY_DB_PATH~/.reversecore_mcp/memory.dbAI メモリ SQLite データベースのパス
REVERSECORE_LIEF_MAX_FILE_SIZE1000000000LIEF 解析の最大ファイルサイズ(1 GB)
ロギング
変数デフォルト説明
LOG_LEVELINFOログの詳細度:DEBUG、INFO、WARNING、ERROR
LOG_FILE<tempdir>/reversecore/app.logログファイルのパス
LOG_FORMAThumanログ形式:human(読みやすい形式)または json(構造化形式)
プラグインと SAST
変数デフォルト説明
REVERSECORE_PLUGIN_DIRS""拡張プラグインを検索するディレクトリのカンマ区切りリスト
REVERSECORE_SAST_RULES_PATH""カスタム YAML SAST ルールファイルのパス

セキュリティモデル

セキュリティは多層防御として実装され、複数の層で保護を行います。

入力とパスの安全性
制御実装
シェルインジェクションなしすべてのサブプロセス呼び出しでリスト形式の引数を使用し、シェル文字列は使用しません(execution.py)
パストラバーサルの防止validate_file_path() と validate_binary_path() でシンボリックリンクを解決し、ワークスペース内にアクセスを制限します(validators.py)
TOCTOU の緩和bypass_cache=True フラグでパスを再検証し、競合状態を防ぎます
入力のサニタイズ実行前にすべてのパラメーターをサニタイズします(security.py)
CSRF 対策ダッシュボードのフォームでは、トークンベースの CSRF 検証が必要です(dashboard/__init__.py)
ネットワークと認証
制御実装
タイミング攻撃に安全な認証API キーの比較に secrets.compare_digest() を使用(web/auth.py)
認証ベクトルの制限X-API-Key と Authorization: Bearer ヘッダーのみ受け付けます。クエリパラメーターや Cookie は受け付けません
ループバックのみのフォールバックMCP_API_KEY が設定されていない場合、HTTP アクセスは 127.0.0.1 に制限されます(web/middleware.py)
レート制限slowapi による、設定可能な分単位の制限
セキュリティヘッダーすべての HTTP レスポンスに HSTS、X-Content-Type-Options、X-Frame-Options、CSP を設定します(web/middleware.py)
最小限の /health公開エンドポイントは {"status": "alive"} のみを返します。詳細情報は認証後に確認できます(web/endpoints.py)
コンテナーとランタイム
制御実装
非 root での実行最小限のケイパビリティで appuser(UID 1000)として実行します
リソース制限Docker Compose により CPU(2.0)とメモリ(4 GB)の制限を適用します
サンドボックス分離動的解析ツール向けの、任意のコンテナー型サンドボックス
CI/CD セキュリティゲート
制御実装
シークレットのスキャンGitleaks を各コミットで実行します(pre-commit フックと CI)
SAST各コミットで Bandit がすべての Python コードをスキャンします
CodeQLmain へのプッシュごとに GitHub CodeQL の静的解析を実行します
依存関係の監査各プッシュで pip-audit を実行し、未レビューの CVE がないことを確認します
コンテナーのスキャンTrivy が Docker イメージの脆弱性(LOW から CRITICAL まで)をスキャンします
エクスプロイト安全性ゲートPOC テンプレートを Bandit でスキャンし、Hypothesis による DAST ファジングを実行し、コンテナー分離を検証します
構造化されたエラー処理

17 種類すべての例外クラスに、プログラムから処理するための RCMCP-E* エラーコードが付与されています。階層の全容については、エラー処理を参照してください。


開発

セットアップ
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
pre-commit install   # installs Ruff, Bandit, Gitleaks hooks
テスト
# Full test suite with coverage report
pytest tests/ -v

# Unit tests only (fast, no external dependencies)
pytest tests/unit/ -v

# Integration tests (requires Docker)
pytest tests/integration/ -v

# Run with coverage threshold enforcement
pytest tests/unit/ --cov=reversecore_mcp --cov-fail-under=80

# Run a specific test
pytest tests/unit/test_cli_tools.py::TestRunFile::test_success -v

# Security boundary tests
pytest tests/ -m security -v

# Benchmarks
pytest tests/ -m benchmark -v

テスト状況:

  • ✅ 1,957 件のユニットテストが Python 3.10/3.11/3.12 で成功
  • 📊 コードカバレッジ 87%(CI では 80%を最低基準として適用)
  • 🔒 Bandit の検出結果はゼロ
  • ⚡ pytest-asyncio による完全な非同期テストスイート

テストマーカー:

マーカー用途
@pytest.mark.unit高速なユニットテスト
@pytest.mark.integrationDocker または外部ツールが必要なテスト
@pytest.mark.slow実行時間の長いテスト
@pytest.mark.benchmarkパフォーマンスベンチマーク
@pytest.mark.securityセキュリティ境界の検証テスト
コード品質
ruff check reversecore_mcp/      # Lint (E, W, F, I, B, C4, UP rules)
ruff format reversecore_mcp/     # Format
mypy reversecore_mcp/            # Type check (0 errors across 108 files)
bandit -r reversecore_mcp/       # Security scan (all severities)
pip-audit                        # Dependency CVE scan
Pre-commit フック

以下のフックが各コミットで自動的に実行されます。

  1. Ruff — 自動修正付きのリンティングとフォーマットチェック
  2. trailing-whitespace — 行末の空白を削除
  3. end-of-file-fixer — ファイル末尾を改行で終わるように修正
  4. check-yaml / check-json — YAML/JSON 構文を検証
  5. check-added-large-files — 1 MB を超えるファイルをブロック
  6. check-merge-conflict — 未解決のマージマーカーを検出
  7. detect-private-key — 誤ってキーをコミットするのを防止
  8. Bandit — Python のセキュリティスキャン

CI/CD パイプライン

main へのプッシュごとに 11 個のパイプラインジョブが起動します。デプロイ前にすべてのジョブが成功する必要があります。

 Lint & Security Gate              Unit Tests (Python Matrix)
   ├─ Gitleaks (secret scan)         ├─ pytest 3.10 --cov-fail-under=80
   ├─ Hadolint (Dockerfile lint)     ├─ pytest 3.11 --cov-fail-under=80
   ├─ Ruff check + format            └─ pytest 3.12 --cov-fail-under=80
   ├─ Mypy type check (108 files)
   ├─ Bandit (all severities)      Wheel Smoke Test
   ├─ pip-audit (no CVEs)            └─ Build wheel → install in /tmp
   └─ Security boundary tests            → verify plugin discovery
                                          → assert __file__ under sys.prefix
 CodeQL Analysis
   └─ Python SAST                  Docker Verification
                                     ├─ Build reversecore-mcp:ci
 Exploit Safety Gate                 ├─ Trivy container scan
   ├─ Bandit on POC templates        ├─ Image size check (< 5 GB)
   ├─ Hypothesis DAST fuzzing        ├─ CLI tool verification
   ├─ Performance benchmarks         ├─ Integration tests in container
   └─ Container isolation test       └─ E2E tool invocation

 In-Container Smoke Test           Build Base Image (amd64 + arm64)
   ├─ Copy test ELF into container   ├─ Compile YARA 4.3.1
   └─ Run scripts/smoke_test.py     ├─ Compile Radare2 6.0.4
                                     ├─ Compile r2ghidra
 Deploy (amd64 + arm64)             └─ Push to GHCR
   ├─ Build app image
   ├─ Push to GHCR                 Merge Manifests
   └─ Trivy rescan on published     └─ Multi-arch manifest → :latest

バイパス禁止ポリシー: CI/CD の失敗をパイプライン設定の変更によって解決することはありません。根本原因は常にソースコードまたは依存関係を直接修正して解消します。


Docker ビルドアーキテクチャ

Docker ビルドでは、ビルド時間を抑えるために 2 層構成を採用しています。

レイヤー 1:ベースイメージ(Dockerfile.base)

ビルドに時間がかかり、変更頻度の低い依存関係をすべてソースからコンパイルするマルチステージビルドです。

compiler-toolchain (python:3.12-slim-bookworm + build tools)
    ├── compiler-yara      (YARA 4.3.1 from source)     [parallel]
    ├── compiler-r2        (Radare2 6.0.4 from source)   [parallel]
    │     └── compiler-r2ghidra  (r2ghidra plugin)       [sequential]
    └── compiler-pip       (pip install into /opt/venv)  [parallel]

base (final runtime: python:3.12-slim-bookworm)
    ├── Runtime packages: file, binutils, gdb, binwalk, graphviz, nasm, sleuthkit
    ├── /opt/yara (compiled YARA)
    ├── /opt/radare2 (compiled r2 + r2ghidra)
    ├── /opt/venv (Python packages)
    └── Non-root user: appuser (UID 1000)

このイメージは、ツールのバージョンが変更された場合にのみ再ビルドされます。ビルド時間:約 12 分。

レイヤー 2:アプリケーションイメージ(Dockerfile)

ベースイメージを継承し、アプリケーションコードをコピーします。

FROM base image
    ├── COPY reversecore_mcp/ (application code)
    ├── COPY scripts/ (smoke test, benchmarks)
    ├── pip install any new requirements
    ├── Security package upgrades
    └── CMD ["python", "-m", "reversecore_mcp.server"]

ビルド時間:約 60 秒。

Docker Compose

アーキテクチャ別のプロファイルを持つ3つのサービスです。

サービスプロファイル説明
reversecore-mcpdefault, x86Intel/AMD x86_64
reversecore-mcp-arm64arm64, macosApple Silicon ARM64
redisすべてのプロファイルタスクキューとキャッシュ用の Redis 7 Alpine

リソース制限:コンテナあたり CPU コア 2.0、メモリ 4 GB。


システム要件

コンポーネント最小要件推奨要件
CPU4 コア8 コア以上
RAM8 GB16 GB
ストレージ20 GB50 GB SSD
OSLinux / macOSDocker 環境(任意の OS)
Docker20.10+24.0+
Python(ローカルモード)3.103.11 または 3.12

プロジェクト構成

reversecore_mcp/
├── core/                          # Infrastructure layer (37 modules)
│   ├── config.py                  # Pydantic BaseSettings (34+ env vars)
│   ├── exceptions.py              # Exception hierarchy (17 classes, RCMCP-E* codes)
│   ├── security.py                # Input sanitization & command arg validation
│   ├── validators.py              # Path validators (TOCTOU-hardened, symlink-safe)
│   ├── r2_pool.py                 # Thread-safe Radare2 connection pool
│   ├── r2_helpers.py              # Structured Radare2 output parsing
│   ├── metrics.py                 # Per-tool timing, counts, error rates, cache stats
│   ├── decorators.py              # @log_execution, @track_metrics
│   ├── error_handling.py          # @handle_tool_errors decorator
│   ├── error_formatting.py        # Structured error formatting
│   ├── execution.py               # Safe subprocess with timeout/output limits
│   ├── command_spec.py            # Command specifications
│   ├── memory.py                  # Async SQLite AI memory store
│   ├── mitre_mapper.py            # MITRE ATT&CK mapping engine
│   ├── evidence.py                # Evidence classification (OBSERVED/INFERRED/POSSIBLE)
│   ├── resilience.py              # Retry, circuit-breaker, timeout patterns
│   ├── task_queue.py              # Background task queue (Redis + arq)
│   ├── extension_registry.py      # Plugin registration system
│   ├── arch_registry.py           # Multi-arch mapping (x86/ARM/MIPS/RISC-V/PPC)
│   ├── result_cache.py            # SHA256-based tool result caching
│   ├── analysis_cache.py          # Multi-level decompilation cache (Redis + SQLite)
│   ├── result.py                  # ToolSuccess / ToolError Pydantic models
│   ├── loader.py                  # Dynamic tool module loader
│   ├── plugin.py                  # Plugin base class
│   ├── extension.py               # Extension base class
│   ├── container.py               # Container/sandbox execution
│   ├── audit.py                   # Audit logging
│   ├── binary_cache.py            # Binary file caching
│   ├── json_utils.py              # orjson-backed JSON (3-5x faster)
│   ├── logging_config.py          # Loguru logging configuration
│   ├── report_generator.py        # Report rendering (Markdown, PDF)
│   ├── resource_manager.py        # MCP resource lifecycle
│   └── sast/                      # Source code scanners
│       ├── python_ast_scanner.py  # Python AST vulnerability scanner
│       ├── regex_scanner.py       # C/C++ regex vulnerability scanner
│       ├── rule_manager.py        # SAST rule loader
│       └── default_rules.yaml     # Default scanning rules
│
├── tools/                         # MCP tool implementations (177 tools)
│   ├── analysis/                  # Static analysis (24 tools)
│   │   ├── static_analysis.py     # file, strings, binwalk
│   │   ├── lief_tools.py          # LIEF binary parser
│   │   ├── capa_tools.py          # CAPA capability detection
│   │   ├── die_tools.py           # Detect It Easy packer detection
│   │   ├── diff_tools.py          # Binary diffing
│   │   ├── emulation_tools.py     # ESIL emulation
│   │   ├── fuzz_tools.py          # Fuzzing harness generator
│   │   ├── fuzzing_campaign.py    # Full fuzzing campaign runner
│   │   ├── symbolic_analysis.py   # angr symbolic execution
│   │   ├── signature_tools.py     # Library signature matching
│   │   ├── source_auditor.py      # SAST (Python + C/C++)
│   │   ├── crash_triage.py        # GDB crash triage
│   │   ├── taint_analysis.py      # Source→sink taint tracing
│   │   ├── advanced_yara.py       # Advanced YARA generation
│   │   ├── patch_vuln_inference.py # Patch vulnerability inference
│   │   └── cache_tools.py         # Analysis cache management
│   │
│   ├── radare2/                   # Disassembly & decompilation (30 tools)
│   │   ├── radare2_mcp_tools.py   # Core Radare2 tool set
│   │   ├── r2ghidra_tools.py      # r2ghidra decompiler (cached)
│   │   ├── r2_analysis.py         # Deep function analysis
│   │   ├── r2_db.py               # SQLite annotation + cache DB
│   │   ├── r2_esil_simulator.py   # Multi-arch ESIL simulator
│   │   └── r2_session.py          # Stateful analysis sessions
│   │
│   ├── malware/                   # Threat detection (9 tools)
│   │   ├── dormant_detector.py    # Backdoor/logic bomb detection
│   │   ├── ioc_tools.py           # IOC extraction
│   │   ├── yara_tools.py          # YARA scanning
│   │   ├── adaptive_vaccine.py    # YARA rule + patch generation
│   │   ├── vulnerability_hunter.py # Dangerous API detection
│   │   ├── autonomous_hunter.py   # Autonomous vuln hunting pipeline
│   │   ├── heap_exploit.py        # Heap exploitation analysis
│   │   ├── poc_generator.py       # PoC exploit generation
│   │   └── rop_builder.py         # ROP chain construction
│   │
│   ├── forensics/                 # Digital forensics (22 tools)
│   │   ├── memory.py              # Volatility3 memory forensics
│   │   ├── network.py             # Scapy PCAP analysis
│   │   ├── disk.py                # Sleuth Kit disk forensics
│   │   └── artifact.py            # Browser/registry/event log analysis
│   │
│   ├── report/                    # Report generation (14 tools)
│   │   ├── report_mcp_tools.py    # MCP-registered report tools
│   │   ├── report_tools.py        # Report rendering logic
│   │   ├── session.py             # Session state management
│   │   ├── converter.py           # Format conversion (Markdown → PDF/HTML)
│   │   ├── email.py               # SMTP report delivery
│   │   ├── sigma_generator.py     # SIGMA rule generation
│   │   └── vex_generator.py       # VEX report generation
│   │
│   └── common/                    # Shared utilities (20 tools)
│       ├── file_operations.py     # File ops, workspace management
│       ├── server_tools.py        # Server health, tool metrics
│       ├── memory_tools.py        # AI memory management (11 tools)
│       ├── patch_explainer.py     # Binary patch explanation
│       └── assembler.py           # Keystone assembler
│
├── prompts/                       # AI reasoning prompts (22 modes)
│   ├── malware.py                 # 9 malware analysis prompts
│   ├── security.py                # 6 security research prompts
│   ├── cve_research.py            # 5 CVE/exploit research prompts
│   ├── game.py                    # Game client analysis prompt
│   ├── report.py                  # Report generation prompt
│   ├── server_health.py           # Server inspection prompts
│   └── common.py                  # Shared constants (DOCKER_PATH_RULE, LANGUAGE_RULE)
│
├── dashboard/                     # Web dashboard (FastAPI + HTMX)
│   ├── templates/                 # Jinja2 templates with HTMX fragments
│   └── static/                    # htmx.min.js (local, CSP-compliant)
│
├── web/                           # HTTP transport layer
│   ├── auth.py                    # API key authentication middleware
│   ├── middleware.py              # Security headers, loopback restriction
│   └── endpoints.py               # /health, file upload, dashboard routes
│
├── resources.py                   # 11 MCP resources (static + dynamic per-binary)
└── server.py                      # FastMCP server entry point

その他のディレクトリ:

tests/
├── unit/                          # 1,957 unit tests
├── integration/                   # Docker-based integration tests
├── fixtures/                      # Test binaries, YARA rules, sample data
└── conftest.py                    # Shared pytest fixtures

scripts/
├── smoke_test.py                  # Multi-layer in-container smoke test
├── check_release_metadata.py      # Version consistency validation
├── fetch_test_binaries.py         # Download test fixtures
├── run-docker.sh                  # Auto-detect architecture and start
└── ...                            # Benchmarks, analysis scripts

docs/
├── getting-started/               # Installation guide
├── development/                   # Architecture, contributing, testing guides
├── api/                           # Tool and module reference
└── user-guide/                    # Analysis workflows

エラー処理

すべてのカスタム例外は ReversecoreError を継承し、構造化されたエラーコードを持ちます。

例外コード種類発生条件
ReversecoreErrorRCMCP-E000UNKNOWN_ERRORすべてのエラーの基底クラス
ValidationErrorRCMCP-E001VALIDATION_ERROR無効な入力、不正なパラメーター
ExecutionTimeoutErrorRCMCP-E002TIMEOUT_ERRORツールがタイムアウトを超過
ToolNotFoundErrorRCMCP-E003TOOL_ERROR必須の CLI ツールがインストールされていない
OutputLimitExceededErrorRCMCP-E004OUTPUT_ERROR出力が最大サイズを超過
ToolExecutionErrorRCMCP-E005EXECUTION_ERRORサブプロセスがゼロ以外を返した
BinaryAnalysisErrorRCMCP-E100BINARY_ANALYSIS_ERROR一般的なバイナリ解析の失敗
DecompilationErrorRCMCP-E101DECOMPILATION_ERRORr2ghidra の逆コンパイルに失敗
DisassemblyErrorRCMCP-E102DISASSEMBLY_ERRORRadare2 の逆アセンブルに失敗
StructureRecoveryErrorRCMCP-E103STRUCTURE_RECOVERY_ERRORC 構造体の復元に失敗
SignatureGenerationErrorRCMCP-E104SIGNATURE_GENERATION_ERRORYARA/シグネチャの生成に失敗
EmulationErrorRCMCP-E105EMULATION_ERRORESIL エミュレーションに失敗
ToolTimeoutErrorRCMCP-E200TOOL_TIMEOUT_ERROR外部ツールがタイムアウト
GhidraConnectionErrorRCMCP-E201GHIDRA_CONNECTION_ERRORr2ghidra の接続に問題が発生
Radare2ErrorRCMCP-E202RADARE2_ERRORRadare2 コマンドに失敗
WorkspaceErrorRCMCP-E300WORKSPACE_ERRORワークスペースファイルへのアクセスエラー
SecurityViolationErrorRCMCP-E301SECURITY_VIOLATIONセキュリティポリシー違反
PathTraversalErrorRCMCP-E302PATH_TRAVERSALパストラバーサルの試みを検出

AI クライアントは error_code フィールドを使用して、失敗をプログラムから処理し、再試行するか、代替ツールを試すか、エラーをユーザーに報告するかを判断できます。


新しいツールの追加

新しい MCP ツールを追加するには、次のパターンに従います。

# reversecore_mcp/tools/analysis/my_tool.py

from reversecore_mcp.core.decorators import log_execution
from reversecore_mcp.core.result import ToolResult, success, failure
from reversecore_mcp.core.security import validate_file_path


@log_execution()
async def my_analysis_tool(
    file_path: str,
    option: str | None = None,
) -> ToolResult:
    """Analyze a binary for X.

    Args:
        file_path: Path to the binary file (relative to workspace).
        option: Optional analysis option.

    Returns:
        ToolResult with status='success' and structured content.
    """
    try:
        safe_path = validate_file_path(file_path)
        result = await perform_analysis(safe_path)
        return success({"result": result})
    except Exception as e:
        return failure(
            error_code="RCMCP-E100",
            message=str(e),
            hint="Check that the file exists and is a valid binary.",
        )

次に、該当するプラグインの __init__.py に登録し、tests/unit/ にテストを追加します。


コントリビューション

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します:git checkout -b feat/my-feature
  3. コードと併せてテストを作成します — カバレッジは 80% を下回ってはなりません
  4. すべてのチェックに合格することを確認します:pytest、ruff check、mypy、bandit
  5. 明確な説明を添えてプルリクエストを作成します

コーディング規約、docstring の規約(Google スタイル)、プルリクエストのチェックリストについては、コントリビューションガイドをお読みください。


ドキュメント

ドキュメント説明
インストールガイドすべての環境に対応した詳細なセットアップ手順
アーキテクチャガイドシステム設計とコンポーネントの詳細
コントリビューションガイドコーディング規約、docstring、PR のワークフロー
テストガイドテストパターン、フィクスチャ、カバレッジ
API リファレンスツールとモジュールのリファレンス
ユーザーガイド解析ワークフロー

使用例

例 1:基本的なマルウェアのトリアージ
User: "Analyze this suspicious file sample.exe"

AI calls:
  1. run_file("sample.exe")           → PE32 executable, x86, MSVC
  2. detect_packer("sample.exe")      → Not packed
  3. extract_iocs("sample.exe")       → 3 IPs, 2 URLs, 1 mutex
  4. run_capa("sample.exe")           → "creates persistence", "encrypts data"
  5. dormant_detector("sample.exe")   → 2 orphan functions with network calls
  6. generate_yara_rule("sample.exe") → Detection rule generated

AI response: "This PE32 binary shows ransomware-like behavior. CAPA detected
encryption and persistence capabilities. I found 2 hidden network functions
that may serve as a backup C2 channel. Here's a YARA rule for detection..."
例 2:汚染分析による脆弱性調査
User: "Find exploitable bugs in this network daemon"

AI activates: taint_analysis_mode

AI calls:
  1. taint_trace("daemon", verify_with_angr=True)
     → Found 3 source→sink paths:
       recv() → strcpy()   [CWE-120, CONFIRMED by angr]
       read() → sprintf()  [CWE-134, LIKELY]
       getenv() → system() [CWE-78, POSSIBLE]

  2. vulnerability_hunter("daemon")
     → 12 dangerous API calls, 4 exploitable patterns

  3. generate_poc_exploit(target="daemon", vuln_type="bof", offset=128)
     → Python exploit script generated

AI response: "I found a confirmed stack buffer overflow where recv() data
flows directly into strcpy() at 0x40123C. angr proved the path is reachable.
Here's a working PoC..."
例 3:デジタルフォレンジック調査
User: "Analyze this memory dump from a compromised server"

AI calls:
  1. memory_list_processes("memdump.raw")
     → 47 processes, 2 with suspicious names

  2. memory_detect_injections("memdump.raw")
     → Code injection detected in PID 1842 (svchost.exe)

  3. memory_extract_strings("memdump.raw", pid=1842)
     → C2 domain strings extracted

  4. artifact_correlate_ioc(artifacts={"domains": ["evil-c2.com"]})
     → Matches known APT group IOCs

  5. create_analysis_report(template_type="full_analysis")
     → PDF report with timeline and MITRE ATT&CK mapping
例 4:1-day 調査のためのパッチ差分分析
User: "Compare the patched and unpatched versions to find what was fixed"

AI activates: patch_diff_auto_mode

AI calls:
  1. diff_binaries("libfoo-1.0.so", "libfoo-1.1.so")
     → 3 functions changed, 1 new function

  2. patch_diff_1day("libfoo-1.0.so", "libfoo-1.1.so")
     → Automated analysis: bounds check added at parse_header()

  3. r2_decompile("libfoo-1.0.so", "parse_header")
     → Decompiled vulnerable version (no bounds check)

  4. r2_decompile("libfoo-1.1.so", "parse_header")
     → Decompiled patched version (memcpy size limited)

AI response: "The patch adds a bounds check in parse_header() at 0x12340.
The old version copies user-controlled length bytes via memcpy without
validation, creating a heap buffer overflow (CWE-122)."

マルチアーキテクチャ対応

arch_registry.py モジュールは、アーキテクチャ名を Radare2 の設定パラメーターにマッピングします。これにより、手動で設定しなくても、ツールをさまざまな CPU アーキテクチャで動作させることができます。

アーキテクチャキーr2 アーキテクチャビット幅PC レジスターSP レジスター
Intel 32 ビットx86x8632eipesp
Intel/AMD 64 ビットx86_64x8664riprsp
ARM 32 ビット / Thumbarm32arm16, 32r15r13
ARM 64 ビット(AArch64)arm64arm64pcsp
MIPSmipsmips32, 64pcsp
RISC-Vriscvriscv32, 64pcsp
PowerPCppcppc32, 64pcr1

エイリアスの解決は自動的に行われます。

  • amd64 → x86_64
  • aarch64 → arm64
  • bits=64 を指定した arm → arm64
  • bits=16 または bits=32 を指定した arm → arm32

Radare2_esil_emulate、assemble_instructions、r2_simulate_patch などのツールは、このレジストリーを使用して、任意のターゲットバイナリーに適した分析環境を設定します。


結果キャッシュシステム

2 層のキャッシュにより、重複する計算を最小限に抑えます。

ツール結果キャッシュ(result_cache.py)

@cache_tool_result デコレーターは、バイナリーファイルの SHA256 ハッシュとツールのキーワード引数に基づいて、任意のツールの出力をキャッシュします。

Cache key = SHA256( "<tool_name>::{sorted_json_kwargs}" )

ストレージバックエンド: r2_db.py を介した SQLite データベースです。get_cached_result() および set_cached_result() ツールから利用できます。

メトリクス: キャッシュヒットとキャッシュミスは、metrics_collector.record_cache_hit() および metrics_collector.record_cache_miss() を介して追跡され、get_tool_metrics ツールで確認できます。

分析キャッシュ(analysis_cache.py)

計算コストの高い逆コンパイル結果専用の、複数レベルのキャッシュです。

レベルバックエンドキー形式TTL用途
L1Redisghidra:decompile:{file_hash}:{function_address}:{decompiler}1 時間(3600s)高速で、セッション間で共有
L2SQLiteテーブル decompilation_cache永続Redis の再起動後も保持

インポート/エクスポート: export_analysis_cache ツールと import_analysis_cache ツールを使うと、キャッシュの状態を rcpack ファイルに保存したり、そこから読み込んだりして、環境間で共有できます。


AI メモリーシステム

AI メモリーシステム(memory_tools.py + core/memory.py)は、セッションをまたいで分析結果を永続的に保存し、検索できるようにします。これにより、AI は次のことができます。

  • バイナリーについて以前に見つけた内容を記憶する
  • 異なるサンプル間で調査結果を相互参照する
  • トピック、マルウェアファミリー、手法ごとにセッションをタグ付けして検索する
仕組み
create_memory_session("analysis of ransomware sample")
    │
    ├── store_analysis_finding("Found AES-256 encryption at 0x401000", tags=["crypto", "ransomware"])
    ├── store_analysis_finding("C2 beacon interval: 30 seconds", tags=["c2", "network"])
    └── tag_analysis_session(tags=["ransomware", "financial-sector"])

# Later, in a different session:
query_analysis_memories("ransomware encryption")
    → Returns previous findings about ransomware encryption patterns

get_binary_analysis_context("sample.exe")
    → Returns all findings ever recorded for this binary

ストレージ: MEMORY_DB_PATH で設定したパス(デフォルト:~/.reversecore_mcp/memory.db)にある非同期 SQLite データベースです。

移植性: export_memory_store と import_memory_store を使うと、メモリーデータベース全体を環境間で転送できます。


Web ダッシュボード

HTTP モード(MCP_TRANSPORT=http)で実行すると、http://localhost:8000/dashboard から Web ダッシュボードを利用できます。以下の機能を提供します。

  • ドラッグ&ドロップによるバイナリーのアップロード
  • リアルタイムの分析状況
  • 関数リストと逆アセンブリ表示のインタラクティブな操作
  • IOC 抽出結果
  • サーバーの稼働状況の監視

技術スタック: FastAPI + Jinja2 テンプレート + HTMX(CSP への準拠のため、CDN に依存せず dashboard/static/ からローカルに読み込みます)。

セキュリティ機能:

  • 状態を変更するすべてのフォームで CSRF トークンを使用
  • Jinja2 の自動エスケープを有効化
  • 表示前に html.escape() ですべてのユーザー入力をサニタイズ
  • validate_file_path() によるパストラバーサル対策

デプロイ

本番環境チェックリスト

本番環境にデプロイする前に:

項目方法
API キーを設定するMCP_API_KEY=<strong-random-key>
root 以外のユーザーを使用する組み込み:コンテナは appuser(UID 1000)として実行されます
リソース制限を設定するデフォルト:docker-compose.yml で CPU 2 個/RAM 4 GB
構造化ログを有効にするログ集約には LOG_FORMAT=json を設定します
Redis を設定するタスクキューとキャッシュには REDIS_URL=redis://<host>:6379/0 を設定します
ワークスペースのパスを設定するREVERSECORE_WORKSPACE=/path/to/isolated/directory
レート制限を確認するREVERSECORE_RATE_LIMIT=60(リクエスト/分。必要に応じて調整してください)
サンドボックスを有効にする動的解析を隔離するには REVERSECORE_SANDBOX_ENABLED=true を設定します
ヘルスチェック

サーバーは、オーケストレーション向けに HTTP ヘルスチェックエンドポイントを提供します。

# Liveness (always 200 if process is running)
curl http://localhost:8000/health/live

# Readiness (checks tool availability)
curl http://localhost:8000/health/ready

# Full health (requires API key if configured)
curl -H "X-API-Key: <key>" http://localhost:8000/health

これらのエンドポイントは API キー認証の対象外であるため、ロードバランサーやコンテナオーケストレーターから状態を確認できます。

コンテナのヘルスチェック

Docker イメージには、30 秒ごとにポート 8000 への TCP 接続を確認する組み込みの HEALTHCHECK 命令が含まれています。Docker と Kubernetes は、異常なコンテナを自動的に再起動します。


トラブルシューティング

よくある問題
ツールが RCMCP-E003: Tool not found を返す

必要な CLI ツールが環境にインストールされていません。

解決策: Docker を使用している場合は、ツールがベースイメージに含まれていることを確認してください。

docker exec reversecore-mcp-arm64 which r2 yara binwalk tsk_recover gdb

ローカルの Python インストールを使用している場合は、不足しているツールをインストールしてください。

# macOS
brew install radare2 yara binwalk sleuthkit

# Ubuntu/Debian
apt install radare2 yara binwalk sleuthkit
タイムアウトエラー(RCMCP-E002 / RCMCP-E200)

解析が設定されたタイムアウト時間を超えました。

解決策: タイムアウト時間を延長してください。

export REVERSECORE_DEFAULT_TOOL_TIMEOUT=300  # 5 minutes

大きなバイナリ(>100 MB)の場合は、クイックスキャン版の使用を検討してください。

  • run_capa の代わりに run_capa_quick
  • detect_packer_deep の代わりに detect_packer
パストラバーサルエラー(RCMCP-E302)

ワークスペースディレクトリの外にあるファイルを参照しました。

解決策: まずファイルをワークスペースにコピーしてください。

copy_to_workspace("/path/to/file.exe")

または、追加のディレクトリを読み取り専用でマウントしてください。

export REVERSECORE_READ_DIRS=/opt/samples,/mnt/evidence
Apple Silicon で Docker コンテナが起動しない

ARM64 プロファイルを使用していることを確認してください。

docker compose --profile arm64 up -d

または、自動検出スクリプトを使用してください。

./scripts/run-docker.sh
Redis の接続が拒否される

タスクキューには、Redis インスタンスが実行されている必要があります。

解決策: メインサービスとともに Redis を起動してください。

docker compose --profile arm64 up -d   # Starts both reversecore and redis

または、REDIS_URL を設定せずに Redis 依存機能を無効にしてください。

r2ghidra の逆コンパイル結果が空になる

通常、これは先に関数の解析が行われていないことを意味します。

解決策: 逆コンパイルの前に解析を実行してください。

Radare2_analyze_binary("sample.exe")
Radare2_decompile_function("sample.exe", "main")

FAQ

これは Ghidra や IDA Pro の代わりになりますか?

いいえ。このプロジェクトは代替ではなく、補完するものです。逆アセンブルには、Radare2 に組み込まれた Ghidra のデコンパイラエンジンである r2ghidra を使用します。GUI は提供せず、フル機能の逆アセンブラのような対話型の解析ワークフローも備えていません。AI アシスタントがプログラムから解析タスクを実行できるようにすることを目的としています。

別途 Ghidra または JDK をインストールする必要がありますか?

いいえ。r2ghidra プラグインは、Ghidra のデコンパイラエンジンを Radare2 に直接組み込みます。JDK も Ghidra のインストールも、Ghidra プロジェクトファイルも必要ありません。r2ghidra プラグインを組み込んでコンパイルした r2 だけで十分です。

どの MCP クライアントに対応していますか?

Model Context Protocol の仕様を実装したクライアントであれば、どれでも利用できます。Claude Desktop、Cursor、Windsurf、Google Antigravity でテスト済みです。サーバーは stdio と HTTP/SSE の両方のトランスポートに対応しています。

Linux/macOS で Windows PE ファイルを解析できますか?

はい。静的解析(逆アセンブル、デコンパイル、文字列抽出、IOC 抽出、YARA スキャン)は、ホスト OS に関係なく、あらゆるファイル形式で動作します。動的解析(エミュレーション、ファジング)には、対象アーキテクチャによって制限がある場合があります。

このツールでマルウェアを解析する際の安全性はどの程度ですか?

Docker コンテナによって分離されます。非 root ユーザーで実行され、CI ではデフォルトでネットワークが無効になり、リソース制限も適用されます。実際のマルウェアを解析する場合は、専用の VM で実行するか、サンドボックス機能(REVERSECORE_SANDBOX_ENABLED=true)を使用することをお勧めします。静的解析ツール(r2、YARA、strings)が対象のバイナリを実行することはありません。

ファイルサイズの上限はどのくらいですか?

デフォルトの上限:

  • アップロード:100 MB(MAX_UPLOAD_SIZE)
  • LIEF の解析:1 GB(REVERSECORE_LIEF_MAX_FILE_SIZE)
  • ツールの出力:10 MB(REVERSECORE_MAX_OUTPUT_SIZE)

すべての上限は環境変数で設定できます。


謝辞

このプロジェクトは、多くのオープンソースプロジェクトの成果を基盤としています。

プロジェクトReversecore MCP における役割
Radare2逆アセンブル、エミュレーション、バイナリ解析
r2ghidraRadare2 用 Ghidra デコンパイラエンジン
FastMCPMCP サーバーフレームワーク
YARAマルウェア検出のためのパターンマッチング
LIEFバイナリ形式の解析(PE、ELF、Mach-O)
CAPAMandiant FLARE による機能検出
angrシンボリック実行エンジン
Capstone逆アセンブルフレームワーク
Keystoneアセンブリフレームワーク
pwntoolsエクスプロイト開発ツールキット
ROPgadgetROP ガジェット検索ツール
Volatility3メモリフォレンジックフレームワーク
Scapyネットワークパケット解析
Sleuth Kitディスクフォレンジックツールキット
Binwalkファームウェア解析
Detect It Easyパッカー/コンパイラの検出

ライセンス

MIT — 詳細は LICENSE を参照してください。


コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。