
Frida
STDIOMCP server enabling AI models to perform Android dynamic analysis using Frida framework
MCP server enabling AI models to perform Android dynamic analysis using Frida framework
A Model Context Protocol (MCP) server that enables AI models to perform Android dynamic analysis using Frida.
frida-mcp/
├── frida_mcp.py # Core MCP server implementation
├── pyproject.toml # Project dependencies and configuration
├── requirements.txt # Alternative dependency file
├── config.json # Optional Frida server configuration
├── README.md # Documentation
└── .gitignore # Git ignore rules
frida_mcp.py
: Main MCP server with Frida integrationpyproject.toml
: Modern Python project configuration (recommended)requirements.txt
: Traditional dependency fileconfig.json
: Optional configuration for frida-server settings# Clone repository git clone https://github.com/zhizhuodemao/frida-mcp cd frida-mcp # Install dependencies (choose one method) # Method 1: Using pip + requirements.txt pip install -r requirements.txt # Method 2: Using pip + pyproject.toml (recommended) pip install -e . # Setup frida-server on Android device adb push frida-server /data/local/tmp/ adb shell "chmod 755 /data/local/tmp/frida-server" adb shell "su -c /data/local/tmp/frida-server &"
Add to your MCP client configuration (e.g., Claude Desktop config file):
Windows (%APPDATA%\Claude\claude_desktop_config.json
):
{ "mcpServers": { "frida": { "command": "python", "args": ["C:\\Users\\YourName\\frida-mcp\\frida_mcp.py"], "transport": "stdio" } } }
macOS/Linux (~/.config/claude/claude_desktop_config.json
):
{ "mcpServers": { "frida": { "command": "python", "args": ["/home/username/frida-mcp/frida_mcp.py"], "transport": "stdio" } } }
The config.json
file contains optional Frida server configuration:
{ "server_path": "/data/local/myfr", "server_name": "aaabbb", "server_port": 27042, "device_id": null, "adb_path": "adb" }
server_path
: Custom path for frida-server on Android deviceserver_name
: Custom frida-server binary nameserver_port
: Port for Frida server communicationdevice_id
: Specific device ID (null for auto-detection)adb_path
: Path to ADB executablespawn(package_name, initial_script?, wait_seconds?, max_output_messages?)
Start an Android application with optional script injection.
attach(target, initial_script?, wait_seconds?, max_output_messages?)
Attach to a running process with optional script injection.
get_frontmost_application()
Get the currently active application.
list_applications()
List all installed applications.
// Hook HashMap operations Java.perform(function() { var HashMap = Java.use("java.util.HashMap"); HashMap.put.implementation = function(key, value) { console.log("HashMap.put:", key, value); return this.put(key, value); }; });
一个 Model Context Protocol (MCP) 服务器,使 AI 模型能够使用 Frida 进行 Android 动态分析。
frida-mcp/
├── frida_mcp.py # MCP 服务器核心实现
├── pyproject.toml # 项目依赖和配置文件
├── requirements.txt # 传统依赖文件
├── config.json # 可选的 Frida 服务器配置
├── README.md # 文档说明
└── .gitignore # Git 忽略规则
frida_mcp.py
: 集成 Frida 的主要 MCP 服务器pyproject.toml
: 现代 Python 项目配置(推荐使用)requirements.txt
: 传统依赖文件config.json
: Frida 服务器设置的可选配置文件# 克隆仓库 git clone https://github.com/zhizhuodemao/frida-mcp cd frida-mcp # 安装依赖(选择一种方法) # 方法1:使用 pip + requirements.txt pip install -r requirements.txt # 方法2:使用 pip + pyproject.toml(推荐) pip install -e . # 在 Android 设备上设置 frida-server adb push frida-server /data/local/tmp/ adb shell "chmod 755 /data/local/tmp/frida-server" adb shell "su -c /data/local/tmp/frida-server &"
添加到您的 MCP 客户端配置(如 Claude Desktop 配置文件):
Windows (%APPDATA%\Claude\claude_desktop_config.json
):
{ "mcpServers": { "frida": { "command": "python", "args": ["C:\\Users\\你的用户名\\frida-mcp\\frida_mcp.py"], "transport": "stdio" } } }
注意:将 你的用户名
替换为实际的 Windows 用户名,路径使用双反斜杠 \\
macOS/Linux (~/.config/claude/claude_desktop_config.json
):
{ "mcpServers": { "frida": { "command": "python", "args": ["/home/用户名/frida-mcp/frida_mcp.py"], "transport": "stdio" } } }
注意:将 用户名
替换为实际的系统用户名
### 配置说明(可选)
`config.json` 文件包含可选的 Frida 服务器配置:
```json
{
"server_path": "/data/local/myfr",
"server_name": "aaabbb",
"server_port": 27042,
"device_id": null,
"adb_path": "adb"
}
server_path
: Android 设备上 frida-server 的自定义路径server_name
: frida-server 二进制文件的自定义名称server_port
: Frida 服务器通信端口device_id
: 指定设备 ID(null 为自动检测)adb_path
: ADB 可执行文件路径spawn(package_name, initial_script?, wait_seconds?, max_output_messages?)
启动 Android 应用程序,可选注入脚本。
package_name
: 应用包名initial_script
: 可选的 JavaScript 脚本wait_seconds
: 等待输出的时间(默认 1.5 秒)max_output_messages
: 最大输出消息数(默认 100)attach(target, initial_script?, wait_seconds?, max_output_messages?)
附加到运行中的进程,可选注入脚本。
target
: 进程名或 PIDinitial_script
: 可选的 JavaScript 脚本wait_seconds
: 等待输出的时间(默认 1.0 秒)max_output_messages
: 最大输出消息数(默认 100)get_frontmost_application()
获取当前活跃的应用程序。
list_applications()
列出所有已安装的应用程序。
// Hook HashMap 操作 Java.perform(function() { var HashMap = Java.use("java.util.HashMap"); HashMap.put.implementation = function(key, value) { console.log("HashMap.put:", key, value); return this.put(key, value); }; });
Q: 应用崩溃怎么办? A: 减少 hook 频率,避免复杂序列化操作。
Q: 没有输出? A: 确认方法被调用,spawn 时脚本在应用启动前注入。
Q: 连接失败?
A: 检查 frida-server 是否运行:adb shell ps | grep frida
requirements.txt
MIT