Frida MCP服务器
一个通过Frida提供动态插装功能的MCP服务器。使用TypeScript构建,并针对Bun运行时进行了优化。
特性
- 动态仪表:钩子函数、检查内存和修改正在运行的进程的行为
- 设备管理:支持本地、USB和远程Frida设备
- 过程控制:生成、附加、恢复和终止进程
- 交互式会话:为复杂的仪器工作流程创建持久会话
- 脚本执行:使用一次性和持久模式执行JavaScript代码
- 文件操作:从插入指令的进程下载文件并查询模块信息
先决条件
安装
无需安装!使用 npx 直接从GitHub运行(请参阅下面的配置)。
对于当地发展:
# Clone the repository
git clone https://github.com/nonsleepr/frida-mcp.ts
cd frida-mcp.ts
# Install dependencies
bun install注: 虽然这个项目是用Bun构建的, npx 由于本机依赖性要求,(来自npm)需要从GitHub运行。使用 npx --yes github:nonsleepr/frida-mcp.ts 运行服务器。
配置
环境变量
FRIDA_DEFAULT_DEVICE:默认远程设备连接字符串(例如,“192.168.1.100:27042”或“192.168.1.100”,端口默认为27042)
Claude桌面配置
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"frida": {
"command": "npx",
"args": ["--yes", "github:nonsleepr/frida-mcp.ts"],
"env": {
"FRIDA_DEFAULT_DEVICE": "192.168.1.100:27042"
}
}
}
}Roo配置
将此添加到您的项目 .roo/mcp.json:
{
"mcpServers": {
"frida": {
"command": "npx",
"args": ["--yes", "github:nonsleepr/frida-mcp.ts"],
"env": {
"FRIDA_DEFAULT_DEVICE": "10.254.1.69:27042"
},
"disabled": false,
"alwaysAllow": []
}
}
}备注:设置 FRIDA_DEFAULT_DEVICE 将其设置为Frida服务器的连接字符串(主机名:port或只是主机名),或者将其留空以使用本地设备。
可用工具
进程管理
| 工具 | 说明 | 参数 |
|---|---|---|
spawn_process | 生成一个进程,其中Frida处于暂停状态。该过程将在启动时暂停。使用 resume_process() 加载脚本后继续执行。 | program (字符串) |
args (可选字符串\[\]) device_id (可选:“默认”或连接字符串)| | resume_process |恢复已生成的进程。 | pid (编号) device_id (可选:“默认”或连接字符串)| | kill_process |通过PID终止进程。 | pid (编号) device_id (可选:“默认”或连接字符串)|
交互式会话
| 工具 | 说明 | 参数 |
|---|---|---|
create_interactive_session | 为动态检测创建交互式会话。建立一个Frida会话,用于注入JavaScript、挂钩函数和监视目标进程。会话将一直持续到显式关闭或进程终止。 | process_id (编号) |
device_id (可选:“默认”或连接字符串) | ||
execute_in_session | 在现有的Frida会话中执行JavaScript代码。所有脚本都是持久的,并继续运行。使用 wait 参数,用于在返回之前捕获初始输出。消息可通过 frida://sessions/{session_id}/messages 资源。 | session_id (字符串) |
javascript_code (字符串) wait (可选数字,默认值:0-等待初始输出的秒数)| | load_script_file |将Frida JavaScript文件加载并执行到现有会话中。所有脚本都是持久的,并继续运行。使用 wait 参数,用于在返回之前捕获初始输出。消息可通过 frida://sessions/{session_id}/messages 资源。 | session_id (字符串) script_path (字符串) wait (可选数字,默认值:0-等待初始输出的秒数)|
文件操作
| 工具 | 说明 | 参数 |
|---|---|---|
download_file | 使用Frida仪器从远程系统下载文件。对Windows路径使用双反斜杠。附加到指定的PID或查找explorer.exe。适用于最大约500MB的文件,超时60秒。 | file_path (字符串) |
output_path (字符串) pid (可选编号) device_id (可选:“默认”或连接字符串)|
可用资源
资源通过URI提供对Frida状态的实时只读访问。
直接资源
| URI | 描述 |
|---|---|
frida://devices | 列出所有已连接的Frida设备 |
frida://sessions | 列出所有活动的Frida会话及其状态 |
frida://documentation | Frida提示和不明显的JavaScript API功能 |
资源模板
| URI模板 | 描述 |
|---|---|
frida://devices/{device_id} | 按ID获取特定设备的详细信息 |
frida://devices/{device_id}/processes | 列出特定Frida设备上的进程。使用“默认”、“本地”、“usb”或“远程”进行自动设备选择,提供特定的设备ID,或使用连接字符串(主机名:端口或主机名)。 |
frida://devices/{device_id}/processes/by-name/{process_name} | 在特定设备上按名称查找进程(不区分大小写的部分匹配)。对配置的远程设备使用“默认”。支持连接字符串(主机名:端口或主机名)。 |
frida://devices/{device_id}/processes/{pid}/module | 获取进程的主模块信息(路径、基址、大小)。对配置的远程设备使用“默认”。支持连接字符串(主机名:端口或主机名)。 |
frida://sessions/{sessionId}/messages | 使用默认的100条消息限制从持久脚本中检索消息。检索时会消耗消息。 |
frida://sessions/{sessionId}/messages/{limit} | 使用自定义限制从持久脚本中检索消息。使用 /last:N (例如。, /last:10 对于最后10条消息)或 /all 无限制。检索时会消耗消息。 |
