CFF浏览器MCP服务器
谈谈你的体育档案。 一种桥接的模型上下文协议(MCP)服务器 CFF浏览器的强大Lua脚本引擎和Claude AI——支持自然语言PE分析、导入/导出检查和二进制补丁。
______________________________________________________________________
这是什么?
该项目将 CFF浏览器 --通过模型上下文协议将专业级PE文件分析工具转换为AI可访问的工具。设置完成后,您可以向Claude询问以下问题:
- *“分析PE标题
malware.exe并标记任何可疑的东西”* - *“列出所有进口
suspicious.dll并强调危险的API调用”* - *“从以下位置提取清单资源
setup.exe"* - *“NOP在偏移0x1A3C处输出5个字节
target.exe"* - *“在偏移量0x2B10处反转跳转,以便许可证检查始终通过”*
…Claude将在引擎盖下使用无头CFF Explorer,以结构化、解释性的结果回答您。
______________________________________________________________________
运作原理
You (natural language)
│
▼
Claude Desktop
│ MCP protocol (stdio)
▼
server.py ◄─── This project
│
│ 1. Generates a temporary .cff Lua script
│ 2. Launches CFF Explorer.exe as a subprocess (headless, no GUI)
│ 3. CFF Explorer runs the script, prints results to stdout, exits
│ 4. server.py parses the output into structured JSON
│
▼
CFF Explorer.exe
(running invisibly in background for ~1 second)关键见解: CFF Explorer有一个内置 Lua脚本引擎(v2)当你通过一个 .cff 脚本文件作为命令行参数,它可以无头运行——没有窗口,没有GUI,只有脚本执行和stdout输出。该项目利用这一点,为人工智能模型提供对CFF Explorer的完整PE分析API的编程访问。
______________________________________________________________________
特性
| 工具 | 说明 |
|---|---|
analyze_pe_headers | 完整PE头转储--DOS、COFF文件头、可选头、所有部分 |
list_imports | 所有导入的DLL和带有序号的函数 |
list_exports | 从DLL导出的所有符号 |
nop_bytes | 补丁:在给定的文件偏移量下,NOP输出N个字节 |
invert_jump | 补丁:翻转条件跳转(JZ↔真是,耶↔JNE等) |
extract_resource | 将PE资源(图标、清单、位图等)保存到磁盘 |
______________________________________________________________________
需求
| 要求 | 详细信息 |
|---|---|
| 操作系统 | 仅限Windows(CFF资源管理器是Windows独有的) |
| python | 3.10或更高 |
| CFF浏览器 | Explorer套件 --免费下载 |
| 克劳德桌面版 | claude.ai/下载 |
______________________________________________________________________
安装
步骤1--下载CFF资源管理器
- 下载 Explorer套件
- 安装它(默认路径:
C:\Program Files\Explorer Suite\)
- 重要提示: 打开CFF浏览器GUI→ go to Edit → 偏好 → 取消勾选 脚本权限保护(SPP)
> SPP在某些脚本操作之前显示GUI同意对话框。在无头模式下,此对话框会永远阻塞,导致超时。禁用它,MCP服务器才能正常工作。
步骤2--克隆此回购
git clone https://github.com/YOUR_USERNAME/cff-explorer-mcp.git
cd cff-explorer-mcp步骤3——安装Python依赖项
pip install -r requirements.txt这只安装了一个软件包: mcp SDK。
步骤4--配置Claude桌面
打开您的Claude Desktop配置文件:
%APPDATA%\Claude\claude_desktop_config.json添加 cff-explorer 进入下 mcpServers。参见 claude_desktop_config_example.json 对于模板:
{
"mcpServers": {
"cff-explorer": {
"command": "python",
"args": [
"C:/path/to/cff-explorer-mcp/server.py"
],
"env": {
"CFF_EXPLORER_PATH": "C:\\Program Files\\Explorer Suite\\CFF Explorer.exe"
}
}
}
}注: 使用实际的Python路径。通过跑步找到它 where python 在PowerShell中。步骤5--重新启动克劳德桌面
关闭并重新打开Claude Desktop。您应该在工具面板中看到可用的CFF资源管理器工具。
______________________________________________________________________
用法示例
PE标头分析
*“分析C:\\samples\\suspice.exe的PE标头”*
克劳德将返回:
- 体系结构(x86/x64/ARM64)
- 入口点、图像库、大小
- 所有具有虚拟/原始大小、RVA和特征标志的部分
- 子系统类型(GUI、CUI、Native等)
- 无论是a。NET程序集
- 可疑标志(伪造时间戳、非标准图像库、部分异常)
进口分析
*“列出所有导入的C:\\malware\\dropper.dll,并标记任何危险内容”*
Claude将枚举所有DLL和函数,然后自动标记:
- 工艺注射原料药(
VirtualAlloc,WriteProcessMemory,CreateRemoteThread) - 反调试API(
IsDebuggerPresent,CheckRemoteDebuggerPresent) - 网络API(
WSAStartup,connect,send) - 加密API(
CryptEncrypt,CryptGenRandom) - 直接NT系统调用(
NtQueryValueKey,NtOpenProcess)
出口商品清单
*“C:\\tools\\hook.dll导出哪些函数?”*
列出所有命名导出及其序号,这对于理解DLL向调用者公开的内容非常有用。
二进制补丁
*“C:\\crack\\game.exe中偏移0x1234处NOP输出6个字节”*
*“反转C:\\target\\app.exe中文件偏移量0x5678处的跳转”*
⚠️ 在打补丁之前,始终备份文件。 这些操作会就地修改文件。
资源开采
*“从C:\\app\\installer.exe中提取清单,并将其保存到C:\\temp\\manifest.xml”*
常见资源类型ID:
| 常数 | ID | 描述 |
|---|---|---|
RT_CURSOR | 1 | 硬件光标 |
RT_BITMAP | 2 | 位图图像 |
RT_ICON | 3 | 应用程序图标 |
RT_MENU | 4 | 菜单 |
RT_DIALOG | 5 | 对话框 |
RT_STRING | 6 | 字符串表 |
RT_VERSION | 16 | 版本信息 |
RT_MANIFEST | 24 | 应用程序清单(XML) |
______________________________________________________________________
项目结构
cff-explorer-mcp/
│
├── server.py ← Main MCP server (all logic lives here)
├── requirements.txt ← Python dependencies (just: mcp)
├── .gitignore ← Standard Python/Windows gitignore
├── claude_desktop_config_example.json ← Config template for Claude Desktop
└── README.md ← This file内部 server.py
| 第节 | 说明 |
|---|---|
run_cff_script() | 核心运行器--写入临时 .cff 文件,调用CFF Explorer子进程,捕获stdout |
script_*() 函数 | 每个工具的Lua脚本生成器——为CFF Explorer修改后的Lua编写 |
parse_*() 函数 | 将CFF Explorer的stdout解析为干净的Python字典 |
list_tools() | MCP工具定义(名称、描述、JSON模式) |
call_tool() | MCP工具调度——将调用路由到正确的脚本+解析器 |
______________________________________________________________________
CFF资源管理器脚本说明
CFF浏览器使用 修改Lua 方言。本项目与标准Lua的主要区别在于:
| 功能 | 标准Lua | CFF Explorer Lua |
|---|---|---|
| 数组 | 1基 | 0基 |
| 不相等 | ~= | != |
| 空值 | nil | null |
| 原始字符串 | 不适用 | @"C:\path" (C#风格) |
os 库 | 可用 | ❌ 不可用 |
io 库 | 可用 | ❌ 不可用 |
| 输出 | io.write() | print() → stdout |
这os和io库缺失是开发过程中发现的主要错误。此项目中的所有脚本仅使用print()为了输出。
______________________________________________________________________
故障排除
脚本超时
- 确保 脚本权限保护(SPP) 在CFF资源管理器首选项中禁用
- 检查
CFF_EXPLORER_PATH指向正确.exe - 首先尝试手动运行CFF Explorer以确保其打开
“未找到CFF资源管理器”错误
- 验证您的路径
claude_desktop_config.json - 默认安装路径:
C:\Program Files\Explorer Suite\CFF Explorer.exe - 在JSON中使用双反斜杠:
C:\\Program Files\\Explorer Suite\\CFF Explorer.exe
工具未出现在Claude Desktop中
- 编辑配置后完全重新启动Claude Desktop
- 验证JSON(无尾随逗号,平衡大括号)
- 检查克劳德桌面日志:
%APPDATA%\Claude\logs\
“尝试索引全局'os'”错误
- 您正在运行的是旧版本的
server.py--更新到最新版本 - 旧版本使用不正确
os.tmpname()这在CFF Explorer的Lua中不存在
______________________________________________________________________
贡献
欢迎拉取请求!对未来工具的一些想法:
check_packer--通过截面熵检测常见的封隔器(UPX、Themida等)update_checksum--修补后重新计算并写入PE校验和add_section--向PE文件添加新节realign_pe--将截面重新对齐到给定的对齐值dotnet_metadata--倾倒。托管程序集的NET元数据表
______________________________________________________________________
学分
- CFF浏览器和脚本引擎 — 丹尼尔·皮斯泰利/NTCore --使这一切成为可能的工具
- MCP-SDK — 人类
- GhidraMCP — Laurie连线 --RE工具与MCP结合的启示
______________________________________________________________________
*与克劳德一起建造*
