用于已Root安卓和已越狱iOS的Frida插桩的Agentic 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> 替换为您手机的局域网地址):
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 连接或本地 shell 访问即可检查和操控应用行为。客户端无需任何 Frida 工具——一切都在目标设备上运行。
典型工作流程:
这可以自然扩展到多设备设置:在同一网络上运行多部手机,每部手机拥有自己的 MCP 服务器,并通过单一智能体进行编排。
cli.py)在已 root 的 Android 上的 Termux 中运行。使用 esbuild 进行即时脚本打包,以及 frida-java-bridge 进行 Java/Android 运行时插桩。虽然 frida-tools 中的 frida-compile 在技术上可用,但由于 Android 的 untrusted_app SELinux 域阻止了 V8 的 JIT 编译器所需的 W^X 内存映射,因此在 Termux 上无法使用——任何非平凡的脚本都会导致 SIGSEGV。esbuild 是一个静态链接的 Go 二进制文件,没有 JIT,因此可以在任何 SELinux 上下文中干净地运行。
ios.py)在无根越狱的 iOS 上运行(已在装有 palera1n 的 iPhone X、iOS 16.7.12 上测试)。使用 frida-compile 进行脚本打包,以及 frida-objc-bridge 进行 Objective-C 运行时插桩。设备上不需要 Node.js。
iOS 移植需要为 arm64 自定义编译完整的 Python 3.12 工具链,因为这些包都无法用于无根越狱的 iOS:
预编译的 wheel 和 Python .deb 已包含在 ios_precompiled/ 中,因此您无需自行构建。iOS 安装说明请参见 setup.md。
设备端执行: Frida 服务器和客户端都在目标设备上运行。MCP 服务器将 HTTP 请求转换为 Frida 命令。这与传统模型(Frida 客户端在单独的计算机上运行)不同。
流式 HTTP 传输: 使用流式 HTTP 而非 stdio,以支持多个并发连接和多设备编排。
设备端脚本打包: Frida 17+ 要求打包 JavaScript。在 Android 上,esbuild 负责打包(它可以在任何 SELinux 上下文中运行,无需 JIT)。在 iOS 上,使用 frida-compile,并自动注入 ObjC 桥接导入。
优先为智能体设计: 专为 AI 智能体而非人类操作员设计。MCP 工具接口的设计使得 LLM 可以自主完成完整的渗透测试工作流——在单个对话中启动应用、附加会话、编写并注入钩子、读取结果。
FridaC2MCP 是一个自动化移动渗透测试框架的脚手架。其理念是将多个专门的 MCP 服务器组合在一起——例如 FridaC2MCP 用于动态插桩,Jadx-MCP 用于静态分析——并让 AI 智能体编排完整的工作流。反编译 APK,识别感兴趣的方法,然后实时钩住它们。无需手动切换工具,无需在终端之间复制粘贴。
这与 Gemini CLI 和 Claude Code 天然契合,它们已经原生支持多工具 MCP 工作流。该框架不需要实现自己的智能体编排——只需提供正确的 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 的网络化演进版本。原创项目开创了将 Frida 作为 MCP 服务器通过 stdio 使用的先河,而 FridaC2MCP 则通过流式 HTTP 和现代 Frida 17 打包,将该理念适配到远程、多设备 C2 环境。
iOS Python 3.12 运行时基于 k1tty-xz 的 python3.12-ios-arm64。原项目针对完全越狱——为适配无根越狱环境(palera1n, /var/jb/ 布局)进行了大量修改。
这是一个概念验证。它缺乏适当的会话管理、优雅的错误处理以及任何形式的安全性。所有通信均为未加密、未认证。请自行承担风险,并仅限在安全的隔离网络环境中使用。
| 包 | 版本 | 构建系统 | 原因 |
|---|
| 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 嵌入 |