Frida MCP Server | Frida MCP 服务器
English
A Model Context Protocol (MCP) server that enables AI models to perform Android dynamic analysis using Frida.
Project Structure
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
Core Files
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
Installation
# Clone repository
git clone http://git.dev.sh.ctripcorp.com/octopus/frida-mcp.git
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 &"
MCP Configuration
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"
}
}
}
Configuration (Optional)
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 executable
Available Tools
spawn(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.
Example Usage
// 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 http://git.dev.sh.ctripcorp.com/octopus/frida-mcp.git
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 配置
添加到您的 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);
};
});
特性
- 🚀 自动 Gson 对象序列化
- 🔍 console.log 自动重定向
- 📱 自动设备连接管理
- 🤖 为 AI 交互优化
常见问题
Q: 应用崩溃怎么办? A: 减少 hook 频率,避免复杂序列化操作。
Q: 没有输出? A: 确认方法被调用,spawn 时脚本在应用启动前注入。
Q: 连接失败?
A: 检查 frida-server 是否运行:adb shell ps | grep frida
Requirements
- Python 3.8+
- Android 设备 (root)
- 查看
requirements.txt
License
MIT
Metadata
Release files for iflow-mcp_zhizhuodemao-frida-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iflow_mcp_zhizhuodemao_frida_mcp-0.1.1.tar.gz | 14.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iflow_mcp_zhizhuodemao_frida_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.5 kB
Release files / iflow_mcp_zhizhuodemao_frida_mcp-0.1.1.tar.gz
| Download URL | iflow_mcp_zhizhuodemao_frida_mcp-0.1.1.tar.gz |
|---|---|
| Size | 14.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
370246b7fdc467d509ecc73a6da191fc8349393c052b6092524ea9b83aa5ad5a
|
|
BLAKE2b-256 checksum How to use checksums |
5a57d1a1287896e94dd36d836e89f884b1919b029d4cd45052166a8c41548c53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / iflow_mcp_zhizhuodemao_frida_mcp-0.1.1-py3-none-any.whl
| Download URL | iflow_mcp_zhizhuodemao_frida_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 13.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eb11d31d85f96a74f8d1b6eb2136b58735781c2586a5fec3214e902ea48c8689
|
|
BLAKE2b-256 checksum How to use checksums |
20df1d4a4070fc43fb49c14b2e4d44b07d2c567a5b0b703f94999acf586df4db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|