Argus について
Argus は、実行中のプロセスを分析し、ランタイムメモリ、逆アセンブル、呼び出しチェーン、インポート解決の証拠を返す Windows 専用 MCP サーバーです。静的解析と併用して実際の実行内容を調べる、リバースエンジニアやプログラム分析者向けです。
主な機能
- 01実行中の Windows プロセスにアタッチ
- 02プロセスメモリの読み取りとスキャン
- 03ランタイムコードの逆アセンブルと関数分析
- 04インポート解決と呼び出しチェーン追跡
- 05根拠とともに仮説を記録
- 06x86 または x64 エンジンの自動選択
活用シーン
- 01旧作ゲームクライアントからのプロトコル復元
- 02復号済みバッファーや実行時ディスパッチの調査
- 03クラッシュ、破損、マルウェアの分析
- 04ランタイムアドレスと Ghidra や IDA の照合
MCP 対応
argus-rs コンポーネントが MCP サーバーとして、プロセス検査、スキャン、逆アセンブル、追跡、証拠台帳のツールを提供します。フロントエンドの argus-router が対象プロセスに合う x86 または x64 エンジンを選びます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Argus
English · 繁體中文 · 简体中文 · 日本語 · 한국어
実行中のプロセスから、AI エージェントに証拠を提供する MCP サーバーです。
これまでのリバースエンジニアリング用 MCP サーバーはすべて、Ghidra、IDA、 apktool などの静的解析ツールを仲介していました。エージェントに渡すのはディスク上のファイルです。プログラムが今まさに実際に何をしているのか、つまりバッファに何が復号されたのか、実行時に vtable のスロットがどのアドレスに解決されたのか、どの呼び出し箇所からそのパケットが送信されたのかを、エージェントに教えられるものはありません。
Argus はもう一方を担います。実行中の Windows プロセスにアタッチし、実行時の証拠を返します。実際のアドレスにある実際のバイト列、実際に実行されたコードの逆アセンブル結果、解決済みの IAT サンク、実行中のメモリからたどった呼び出し元チェーン、そして何が証明済みで何がまだ推測にすぎないのかを追跡する仮説台帳です。
モデルの代わりに結論を出すことはありません。アドレス、モジュール/RVA のコンテキスト、命令、呼び出し元、呼び出し先、ローカルな証拠を返し、あとは任せます。
これが必要な理由
ゲームは終わりを迎えます。パブリッシャーがサーバーを停止し、スタジオが閉鎖され、ジャンルが廃れていきます。残されるのは、誰かのハードドライブにあるクライアントだけです。もう何にも接続できず、ソースも、プロトコルのドキュメントも、話しかけられるサーバーもありません。あるのは、もう誰も聞いていない言語を今も覚えている実行ファイルだけです。
Argus は、そうしたゲームを復活させるために作られました。
終了したゲームのサーバーを再構築するには、そのプロトコルを解明する必要があります。パケットのレイアウト、暗号化、オペコードのディスパッチ、通信相手側のステートマシンなどです。唯一残された仕様書は、クライアントのバイナリそのものです。必要なドキュメントを書いた人はおらず、それを知っていた人たちも、とうの昔に別の道へ進んでいます。
静的解析で分かることもあります。しかし、20 年前のクライアントはパックされ、文字列は暗号化され、ハンドラーはプロセスの起動後にしか存在しないテーブルを介してディスパッチされます。そこで実行して、動作を観察します。その話は次のセクションに続きます。
このツールの目的は、稼働中のものに侵入することではなく、止まったものをもう一度話せるようにすることです。
なぜ実行中のプロセスを調べるのか
CPU は暗号文を実行できません。
プログラムがディスク上で自身を保護するために何をしていても、パッキング、文字列の暗号化、仮想化された命令、ロード時に解決されるインポートなど、プロセッサーがコードを実行する前にすべて元に戻す必要があります。実行の瞬間には、本物の命令とデータがメモリ上に平文で存在しています。そうでなければ実行できません。これは特定の保護ツールの欠陥ではなく、プロセッサーの仕組みに起因することであり、どれほど難読化しても回避できません。
つまり、この 2 つのアプローチは異なるものを読み取ります。
- 静的解析はファイルを読み取ります。 作者が配布したものです。
- 実行時解析は、ファイルが変化した後の状態を読み取ります。 マシンが実際に実行しているものです。
両者が異なる場合、後者が真実です。
| 状況 | 静的解析ツール | Argus |
|---|---|---|
| パックされたコード/自己復号コード | パッカーを確認します | メモリ上で展開されたバイト列を逆アセンブルします |
| vtable を介した間接呼び出し | call [rax+0x18] を確認します | スロットを具体的な呼び出し先に解決します |
| 実行時に解決されるインポート | サンクのスタブを確認します | サンクを実際の API に解決します |
| 復号後のバッファの内容 | 何も分かりません | 平文を読み取ります |
| 40 個の呼び出し箇所のうち実際に実行されるもの | 推測します | 実行された箇所を記録します |
静的解析が優れている点
このトレードオフは逆方向にも成り立ちます。この点は率直に述べておく価値があります。静的アナライザーは、実行されないパスも含め、すべてのパスを確認できます。Argus が確認できるのは、実際に実行されたものだけです。一度も通らなかった分岐には、実行時の証拠がまったく残りません。また、誰にも呼び出されない関数は、存在しないも同然です。
どちらか一方の見方だけでは全体を把握できません。そのために correlate_addr があります。実行時アドレスをモジュールと RVA に対応付け、Ghidra または IDA で調べ、両方の情報を活用します。Argus は静的アナライザーに取って代わるのではなく、併用するために作られています。
ツール
プロセスとメモリ
processes_list · processes_find · mem_attach · mem_modules · memory_regions
mem_read · mem_read_chain · mem_write
スキャン
scan_bytes · scan_string · scan_regex · scan_pointers_to · scan_callers
scan_x86_call_sites · value_scan_start · value_scan_refine · value_explain · real_rate
逆アセンブルと構造の復元
disasm_at · analyze_function · find_vtable · extract_dispatch_tables
analyze_send_call_sites · read_struct · diff_struct
インポートと API の解決
runtime_imports · runtime_exports · resolve_iat_thunks · resolve_api_targets
トレースと対応付け
trace_call_chain · correlate_addr · locate
証拠台帳
record_hypothesis · verify_hypothesis · query_hypotheses · add_evidence
知っておく価値のある設計上の判断が 2 つあります
アーキテクチャの自動判定
64 ビットのアナライザーを 32 ビット(WOW64)のターゲットに接続すると、ポインター演算が気付かないうちに誤ったり、PE の解析結果がでたらめになったりすることがあります。Argus には、ターゲットプロセスを調べて x86 か x64 かを判定し、対応する argus-rs ビルドに処理を振り分ける薄いフロントエンド argus-router が付属しています。設定するバイナリは 1 つだけで、ターゲットごとに適切なエンジンが選ばれます。
証拠台帳
エージェントはもっともらしい説明を作るのは得意ですが、その説明を裏付ける根拠がないことに気付くのは苦手です。record_hypothesis/verify_hypothesis/add_evidence を使うと、この区別が明確になります。主張は仮説として記録され、証拠が添付され、検証に合格した場合にのみ、確立された事実になります。query_hypotheses を使えば、後のセッションで前のセッションが中断したところから作業を再開でき、すべてを一から導き出す必要はありません。
インストール
ビルド済みバイナリ
最新のリリースをダウンロードし、任意の場所に展開します。
アーカイブには argus-router.exe と、両方のエンジンビルド(argus-rs-x64.exe、argus-rs-x86.exe)が含まれています。同じディレクトリに置いてください。
ソースからビルド
両方の Windows ターゲットがインストールされた Rust ツールチェーンが必要です。
rustup target add x86_64-pc-windows-msvc i686-pc-windows-msvc
git clone https://github.com/r0ptik/argus
cd argus
cargo build --release --target x86_64-pc-windows-msvc
cargo build --release --target i686-pc-windows-msvc
設定
Claude Code
claude mcp add argus -- C:\path\to\argus-router.exe
任意の MCP クライアント
{
"mcpServers": {
"argus": {
"command": "C:\\path\\to\\argus-router.exe"
}
}
}
対象範囲と想定される用途
Argus は、リバースエンジニアリングおよびプログラム解析のツールです。ゲームやサーバーの保全、ネットワークプロトコルの解析、相互運用やクリーンルームでの再実装、マルウェア解析、クラッシュやデータ破損のデバッグ、セキュリティ研究などを目的として作られています。
稼働中のサービスへの攻撃を目的として作られたものではありません。このリポジトリではチート機能を一切受け付けていません。詳しくは CONTRIBUTING.md をご覧ください。
別のプロセスを開いて読み取る権限が必要なため、自分が所有するプロセス、または解析を許可されているプロセスに対してのみ使用してください。解析する権限のないソフトウェアに接続すると、そのソフトウェアの利用規約や現地の法律に違反する場合があります。その責任はツールではなく、利用者にあります。
プラットフォームのサポート
Windows のみです。メモリアクセス層(argus-winmem)は Win32 のプロセス API とメモリ API を基盤としており、現時点では Linux または macOS 向けのバックエンドはありません。
WOW64 上で動作する 32 ビットプロセスを含め、x86 と x64 の両方のターゲットをサポートしています。
クレート
| クレート | 役割 |
|---|---|
argus-router | フロントエンドバイナリ。アーキテクチャの検出とディスパッチ |
argus-rs | MCP サーバー。ツール定義とリクエスト処理 |
argus-engine | 解析エンジン。逆アセンブル、構造の復元、トレース |
argus-winmem | Win32 プロセスとメモリへのアクセス |
argus-scan | パターンおよび値のスキャンプリミティブ |
evidence-core | アドレス、モジュール、RVA、エビデンスのデータモデル |
ライセンス
MIT。LICENSEを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。