在 Android 设备上运行 Frida,并通过 MCP (Model Context Protocol) 服务让 AI 更加便捷地使用 Frida 进行动态分析、Hook、内存检查、网络监控等操作。
FridaMCP 是一个将 Frida 动态插桩工具与 MCP 协议结合的项目,专为 AI 辅助的 Android 应用安全分析而设计。它包含四个核心组件:
- Android 端 Frida 运行器 —— 在 Android 设备上启动
frida-server,提供 Frida 运行环境。 - APK 注入器 —— 将
frida-gadget自动注入到目标 APK 中,使目标应用启动时自动加载 Frida,无需 root 也能使用。 - MCP 服务器 —— 监听端口
8768,向 AI 客户端暴露一系列 Frida 操作工具,让 AI 可以直接调用 Frida 进行安全分析。 - 移动端 APP —— jshook 风格的移动端 UI,提供应用注入管理、注入状态自动检测、MCP 服务一键拉起等可视化操作(详见
mobile-app/)。
┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ AI Client │◄───►│ MCP Server │◄───►│ Android Device │
│ (Claude等) │ MCP │ (Port 8768) │ USB │ + Frida Server │
└─────────────┘ └──────────────────┘ └─────────────────┘
│ │
│ ▼
┌───────────────┐ ┌────────────────┐
│ MCP Modules │ │ Target App │
│ (8 modules) │ │ (Injected) │
└───────────────┘ └────────────────┘
- 在 Android 设备上启动
frida-server(root 设备)或使用 APK 注入器注入frida-gadget(非 root 设备)。 - 启动 MCP 服务器,监听
8768端口。 - AI 客户端通过 MCP 协议连接服务器,调用各种 Frida 工具。
- AI 可以列出进程、Hook 方法、读取内存、监控网络、自动化 UI 等。
- 8 个 MCP 模块:进程管理、Hook 管理、内存检查、网络监控、文件系统、UI 自动化、加密分析、日志捕获
- APK 注入器:自动将
frida-gadget注入 APK,支持非 root 设备 - 移动端 APP:jshook 风格 UI,注入状态自动检测,一键拉起 MCP 服务(详见
mobile-app/) - 注入状态检测:三层检测策略(静态 / 运行时 / 进程),实时展示已注入应用
- 多设备支持:支持 USB 设备、远程设备、模拟器
- 脚本管理:内置常用 Frida 脚本模板,支持自定义脚本
- 实时日志:捕获 Frida 脚本输出和应用日志
- AI 友好:所有工具都设计为 AI 易于调用,参数清晰,返回结构化数据
完整的快速上手指南请参阅 QUICKSTART.md
- Python 3.9+
- Android 设备(root 或非 root 均可)或本地测试环境
adb工具(连接 Android 设备时需要)
git clone https://github.com/yfy227/fridamcp.git
cd fridamcp/fridamcp
pip install -r requirements.txt# 方式 1:连接 Android 设备(USB 调试已开启)
python -m fridamcp --transport sse --port 8768
# 方式 2:无设备,本地测试
python -m fridamcp --transport sse --port 8768 --device-type local
# 方式 3:stdio 模式(IDE 集成)
python -m fridamcp --transport stdioSSE 连接地址:http://localhost:8768/sse
然后直接用自然语言告诉 AI:
列出设备上的所有进程
附加到 com.example.app 并 Hook 它的登录方法
在内存中搜索 "password" 字符串
📱 Root 设备(点击展开)
# 安装 frida-server 到设备
cd android && bash install_frida.sh
# 启动 frida-server
bash start_frida.sh
# 验证
frida-ps -U📲 非 Root 设备(APK 注入)
# 1. 下载 frida-gadget
# https://github.com/frida/frida/releases
# 重命名为 libfrida-gadget-arm64-v8a.so
# 放到 injector/frida_gadget/ 目录
# 2. 注入目标 APK
python injector/inject_apk.py 目标应用.apk 输出.apk --use-apktool
# 3. 安装注入后的 APK
adb install 输出.apk在 AI 客户端(如 Claude Desktop)的 MCP 配置中添加:
{
"mcpServers": {
"fridamcp": {
"url": "http://localhost:8768/mcp"
}
}
}| 模块 | 说明 | 主要工具 |
|---|---|---|
| process | 进程管理 | list_processes, spawn_app, attach_process, kill_process, resume_process |
| hook | Hook 管理 | hook_method, hook_native, unhook_all, list_hooks, trace_method |
| memory | 内存检查 | read_memory, write_memory, search_memory, list_modules, list_exports |
| network | 网络监控 | start_capture, stop_capture, get_capture, hook_ssl |
| filesystem | 文件系统 | list_files, read_file, pull_file, push_file |
| ui_automation | UI 自动化 | tap, input_text, screenshot, list_ui |
| crypto | 加密分析 | hook_crypto, dump_keys, hook_ssl_keys |
| log | 日志捕获 | start_log, get_logs, clear_logs |
详细文档请参考 docs/MODULES.md。
fridamcp/
├── fridamcp/ # MCP 服务器主包
│ ├── __init__.py
│ ├── server.py # MCP 服务器入口 (端口 8768)
│ ├── config.py # 配置管理
│ ├── core/ # 核心封装
│ │ ├── frida_client.py # Frida 客户端封装
│ │ ├── device_manager.py # 设备管理
│ │ └── session_manager.py # 会话管理
│ ├── modules/ # MCP 模块
│ │ ├── process.py # 进程管理
│ │ ├── hook.py # Hook 管理
│ │ ├── memory.py # 内存检查
│ │ ├── network.py # 网络监控
│ │ ├── filesystem.py # 文件系统
│ │ ├── ui_automation.py # UI 自动化
│ │ ├── crypto.py # 加密分析
│ │ └── log.py # 日志捕获
│ └── utils/ # 工具
│ ├── apk_injector.py # APK 注入逻辑
│ └── logger.py # 日志工具
├── injector/ # APK 注入器
│ ├── inject_apk.py # 注入脚本
│ ├── frida_gadget/ # frida-gadget 二进制
│ └── templates/ # 配置模板
├── android/ # Android 端
│ ├── install_frida.sh # 安装 frida-server
│ ├── start_frida.sh # 启动 frida-server
│ └── frida_server/ # frida-server 二进制
├── scripts/ # 脚本
│ ├── setup.sh # 环境配置
│ └── run.sh # 启动服务器
├── docs/ # 文档
│ ├── ARCHITECTURE.md # 架构设计
│ ├── USAGE.md # 使用指南
│ └── MODULES.md # 模块文档
├── tests/ # 测试
├── requirements.txt # Python 依赖
├── setup.py # 安装配置
└── README.md # 项目说明
让 AI 帮你 Hook 某个 Java 方法:
AI: 请帮我 Hook com.example.app.LoginActivity 的 checkPassword 方法,
打印参数和返回值。
FridaMCP:
1. [process] attach_process("com.example.app")
2. [hook] hook_method("com.example.app.LoginActivity", "checkPassword",
"{ print args, retval }")
3. [log] get_logs() → 返回 Hook 到的调用记录
AI: 请监控应用的所有 HTTPS 请求,持续 30 秒。
FridaMCP:
1. [process] attach_process("com.example.app")
2. [network] start_capture()
3. 等待 30 秒
4. [network] get_capture() → 返回所有捕获的请求
5. [network] stop_capture()
AI: 在应用内存中搜索字符串 "password"。
FridaMCP:
1. [process] attach_process("com.example.app")
2. [memory] search_memory("password") → 返回所有匹配地址
3. [memory] read_memory(address, 64) → 读取上下文
配置文件位于 fridamcp/config.py,主要配置项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
MCP_PORT |
8768 |
MCP 服务器监听端口 |
MCP_HOST |
0.0.0.0 |
MCP 服务器监听地址 |
FRIDA_DEVICE_ID |
None |
Frida 设备 ID(None 表示自动选择) |
FRIDA_DEVICE_TYPE |
usb |
设备类型(usb/remote/local) |
LOG_LEVEL |
INFO |
日志级别 |
SCRIPT_TIMEOUT |
30 |
脚本执行超时(秒) |
- 本工具仅用于合法的安全研究和应用测试
- 请勿用于非法用途
- 使用前请确保已获得目标应用的所有者授权
- 注入 APK 后请勿分发,仅供个人测试使用
FridaMCP 提供了 jshook 风格的移动端 APP UI,支持应用注入管理、注入状态自动检测、MCP 服务一键拉起等功能。
- 应用列表:展示设备上所有应用,标注注入状态(运行中 / 已注入 / 未注入 / 异常)
- 注入检测:三层检测策略(静态扫描 APK / 运行时端口检测 / 进程内存映射检测)
- 一键拉起 MCP:为已注入应用快速启动/停止 MCP 服务
- APK 注入:图形化 APK 注入工作流,支持架构选择和自动签名
- MCP 管理:服务器启停、会话管理、8 个模块开关
cd mobile-app
npm install
npm run dev
# 浏览器访问 http://localhost:3000(建议使用移动端模拟)详细设计说明请参阅 移动端 APP 设计方案。
| 文档 | 说明 |
|---|---|
| 快速上手 | 5 分钟内让 AI 帮你分析 Android 应用 |
| 使用指南 | 详细使用说明、场景示例、工具列表 |
| 常见问题 | 安装、设备、MCP、性能等常见问题解答 |
| 架构设计 | 整体架构与模块设计 |
| 模块说明 | 8 个 MCP 模块详解 |
| 移动端 APP 设计 | 移动端 UI 与注入检测设计 |
MIT License - 详见 LICENSE
欢迎提交 Issue 和 Pull Request。