
ルート化されたAndroidおよび脱獄されたiOS向けの、Fridaインストゥルメンテーションのためのエージェント型C2スタイルMCPサーバー。
ストリーム可能なHTTPトランスポートを使用したMCPサーバーで、Fridaの動的インストルメンテーションを完全にデバイス上で実行します。クライアント側のツールは不要です。
このプロジェクトはroot化されたAndroidおよび脱獄済みiOSデバイス上で直接動作し、FridaをHTTP経由で呼び出し可能な一連のツールとして公開します。MCP互換のクライアントはネットワーク上のデバイスに接続し、ローカルにFridaツールをインストールすることなく動的インストルメンテーションを実行できます。
今後、開発は Gemini CLI と Claude Code を主要クライアントとしてターゲットにしています。どちらもネイティブのマルチエージェントオーケストレーションとMCPサポートを構築しており、これは複数のMCPサーバー(例:FridaC2MCP + Jadx-MCP)を自動化ワークフローに構成するというプロジェクトの方向性と合致しています。5ire は初期開発中に広く使用され、サーバーと対話するための優れたGUIオプションとして引き続き利用できます。
Gemini CLI — デバイスのMCPサーバーを登録 (<DEVICE_IP> をスマートフォンのLANアドレスに置き換えてください):
gemini mcp add --transport http frida-c2-mcp http://<DEVICE_IP>:6767/mcp
Androidデモ
https://github.com/user-attachments/assets/7cee77c5-ed40-4797-b6b5-3edb5fdd03ce
iOSデモ
https://github.com/user-attachments/assets/1f0fa9c4-6fd0-4dfd-a640-78c9f8a95a6b
keep_alive=True) の両方をサポート。目標は完全自動化されたエージェント駆動のモバイルセキュリティテストです。FridaをMCPサーバーとして公開することで、ペネトレーションテスターやAIエージェントは初期セットアップ後に直接のUSB接続やローカルシェルアクセスなしでアプリケーションの動作を検査・操作できます。クライアントはFridaツールを一切必要とせず、すべてがターゲットデバイス上で動作します。
典型的なワークフロー:
これはマルチデバイス構成にも自然に拡張されます。同じネットワーク上で複数のスマートフォンを実行し、それぞれに独自のMCPサーバーを持たせ、単一のエージェントからそれらをオーケストレーションできます。
cli.py)ルート化されたAndroidのTermux上で動作します。esbuildを使用してその場でスクリプトバンドルを行い、frida-java-bridgeを使用してJava/Androidランタイムのインストルメンテーションを行います。frida-compileは技術的にはfrida-tools経由で利用可能ですが、Androidのuntrusted_app SELinuxドメインがV8 JITコンパイラに必要なW^Xメモリマッピングをブロックするため、Termuxでは使用できません — これにより、非自明なスクリプトでSIGSEGVが発生します。esbuildはJITを持たない静的にリンクされたGoバイナリであるため、どのSELinuxコンテキストでも問題なく動作します。
ios.py)ルートレス脱獄済みiOS上で動作(iPhone X、iOS 16.7.12、palera1nでテスト済み)。スクリプトバンドルにはfrida-compileを、Objective-Cランタイムのインストルメンテーションにはfrida-objc-bridgeを使用します。デバイス上にNode.jsは必要ありません。
iOS移植版では、以下のパッケージがルートレス脱獄済みiOSで利用できなかったため、arm64用のPython 3.12ツールチェーン全体をカスタムコンパイルする必要がありました:
プリコンパイル済みwheelsとPython .debはios_precompiled/に含まれているため、自分でビルドする必要はありません。iOSのインストール手順についてはsetup.mdを参照してください。
オンデバイス実行: Fridaサーバーとクライアントの両方がターゲットデバイス上で動作します。MCPサーバーはHTTPリクエストをFridaコマンドに変換します。これは、Fridaクライアントが別のコンピュータ上で動作する従来のモデルからの逸脱です。
ストリーム可能なHTTPトランスポート: 複数の同時接続とマルチデバイスオーケストレーションをサポートするために、stdioの代わりにストリーム可能なHTTPを使用。
オンデバイススクリプトバンドル: Frida 17+ではバンドルされたJavaScriptが必要です。Androidではesbuildがバンドルを処理(JITなしで任意のSELinuxコンテキストで動作)。iOSではfrida-compileを使用し、ObjCブリッジのインポートが自動的に注入されます。
エージェントファースト設計: 人間のオペレーターではなくAIエージェントによって利用されるように構築。MCPツールインターフェースは、LLMが単一の会話内で完全なペネトレーションテストワークフロー(アプリの起動、セッションのアタッチ、フックの作成と注入、結果の読み取り)を自律的に実行できるように設計されています。
FridaC2MCPは自動化されたモバイルペネトレーションテストフレームワークの足場です。アイデアは、複数の専門化されたMCPサーバー(例:動的インストルメンテーション用のFridaC2MCP、静的解析用のJadx-MCP)を構成し、AIエージェントに完全なワークフローをオーケストレーションさせることです。APKを逆コンパイルし、興味深いメソッドを特定し、それらをライブでフックします。手動でのツール切り替えや端末間のコピーペーストは不要です。
これは、すでにネイティブでマルチツールMCPワークフローをサポートしているGemini CLIやClaude Codeと自然に連携します。フレームワークは独自のエージェントオーケストレーションを実装する必要はなく、適切なMCPサーバーを提供し、既存のエージェントが得意なことをさせるだけで十分です。
iOS OpenSSL / SSL: Python 3.12ビルドのOpenSSL統合が完全に正しくありません。これはMCPサーバー(自身のトランスポートにHTTPSを使用しない)をブロックしていませんが、将来の依存関係がデバイス上で動作するTLSコンテキストを必要とする場合に問題となる可能性があります。詳細はdevlog.mdを参照してください。
FastMCP 2.xのみ: FastMCP 3.xで破壊的なAPI変更が導入されました。AndroidとiOSはどちらも3.x未満に固定されています。requirements-android.txtまたはrequirements-ios.txtを使用してインストールしてください。このリポジトリが移行するまで、固定されていないfastmcpにアップグレードしないでください。
このプロジェクトは、Daniel NakovによるオリジナルのFridaMCPのネットワーク進化版です。オリジナルプロジェクトがstdio上でFridaをMCPサーバーとして使用する先駆けとなった一方、FridaC2MCPはこの概念を、ストリーム可能なHTTPと最新のFrida 17バンドルを使用したリモート・マルチデバイスC2環境に適応させました。
iOS Python 3.12ランタイムは、k1tty-xzによるpython3.12-ios-arm64をベースにしています。オリジナルプロジェクトはルートフル脱獄を対象としていましたが、ルートレス脱獄環境(palera1n、/var/jb/レイアウト)に適応するために大幅な修正が必要でした。
これは概念実証です。適切なセッション管理、適切なエラーハンドリング、あらゆる形式のセキュリティが欠けています。すべての通信は暗号化されておらず、認証もありません。自己責任で使用し、安全で隔離されたネットワーク環境でのみ使用してください。
| Package | Version | Build System | 理由 |
|---|
| Python | 3.12.5 | configure + Make | ベースランタイム — Procursusでは利用不可 |
| frida-python | 17.6.0 | Meson + setuptools | コアFridaバインディング |
| pydantic-core | 2.41.5 | maturin (Rust/PyO3) | FastMCPに必要 |
| cryptography | 47.0.0.dev1 | maturin (Rust) + OpenSSL 3.x | 依存関係チェーン; A11用のSIGILL修正が必要 |
| cffi | 2.0.1.dev0 | setuptools + libffi | cryptographyに必要 |
| pyyaml | 7.0.0.dev0 | setuptools + libyaml | FastMCP依存関係に必要 |
| rpds-py | 0.30.0 | maturin (Rust/PyO3) | FastMCP依存関係に必要 |
| lupa | 2.6 | setuptools + Lua | Lua埋め込み |