article
README
🚀 反混淆MCP服务器
这是一个经过大语言模型优化的模型上下文协议(MCP)服务器,旨在帮助大语言模型对压缩和打包后的JavaScript代码进行逆向工程、导航和理解。
🚀 快速开始
本服务器将压缩代码视为一个可搜索的数据库,解决了标准“美化器”仅格式化代码,导致大语言模型难以处理超出上下文窗口的大量线性文本文件的问题。它允许大语言模型执行以下操作:
- 反混淆和解包:使用
webcrack将Webpack/Browserify包拆分为单个模块。 - 查看架构:在读取代码之前,返回文件结构(导出、函数)的JSON摘要。
- 随机导航:按需读取特定模块(
get_module),而不是整个文件。 - 语义搜索:在数千个解包模块中查找特定字符串或模式的存在位置。
✨ 主要特性
deobfuscate:入口点。解包并将包缓存到内存中。returnCode(默认false):默认返回摘要以节省上下文。设置为true可查看完整代码。skipVendor:过滤掉node_modules和Webpack样板代码,专注于应用代码。mangle:缩短变量名以节省令牌。jsx:恢复React JSX语法。
analyze_structure:返回高级抽象语法树(AST)摘要(函数、类、导出)以节省令牌。list_modules:列出解包包中找到的所有模块。list_functions:扫描缓存模块,列出具有签名和参数的已定义函数/类。get_call_graph:为特定函数生成调用图,识别它调用的内容和调用它的内容。get_module:获取单个模块的格式化源代码。get_symbol_source:仅提取特定函数、类或变量以节省令牌。search_modules:在所有模块中进行正则表达式/字符串搜索。format_code:对JS/HTML/CSS进行标准的Prettier格式化。get_help:返回任何工具的详细文档。
📦 安装指南
从npm安装(推荐)
npm install -g deobfuscate-mcp-server
从源代码构建
git clone https://github.com/ricardodeazambuja/deobfuscate-mcp-server.git
cd deobfuscate-mcp-server
npm install
npm run build
打包并安装(可选)
要创建可分发的tarball并全局安装:
npm pack
npm install -g ./deobfuscate-mcp-server-1.0.0.tgz
💻 使用示例
客户端配置
要将此服务器与你喜欢的大语言模型客户端一起使用,请添加以下配置。
Claude Code
在终端中运行以下命令:
claude mcp add deobfuscate-mcp-server -- npx -y deobfuscate-mcp-server
或者,编辑~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"deobfuscate-mcp-server": {
"command": "npx",
"args": ["-y", "deobfuscate-mcp-server"]
}
}
}
Gemini CLI
在终端中运行以下命令:
gemini mcp add deobfuscate-mcp-server npx -y deobfuscate-mcp-server
或者,编辑~/.gemini/settings.json:
{
"mcpServers": {
"deobfuscate-mcp-server": {
"command": "npx",
"args": ["-y", "deobfuscate-mcp-server"]
}
}
}
Antigravity
在终端中运行以下命令:
antigravity --add-mcp '{"deobfuscate-mcp-server": {"command": "npx", "args": ["-y", "deobfuscate-mcp-server"]}}'
或者,编辑~/.antigravity/settings.json:
{
"mcpServers": {
"deobfuscate-mcp-server": {
"command": "npx",
"args": ["-y", "deobfuscate-mcp-server"]
}
}
}
开发/本地使用
如果你从源代码运行服务器,请将命令替换为:
"command": "node",
"args": ["ABSOLUTE_PATH_TO_DIST/index.js"]
(将ABSOLUTE_PATH_TO_DIST替换为你机器上dist文件夹的实际绝对路径)
启动服务器
node dist/index.js
大语言模型的示例工作流程
- 用户:“分析这个压缩文件:
bundle.min.js...” - 大语言模型:调用
deobfuscate(code="...", skipVendor=true)。- 服务器:“反混淆完成。解包了15个模块。跳过了45个供应商模块...”
- 大语言模型:“好的,我看到入口点需要模块42。那是什么?”
- 大语言模型:调用
get_module(id="42")。- 服务器:返回模块42的代码。
- 大语言模型:“'login'函数在哪里定义?”
- 大语言模型:调用
search_modules(query="function login")。- 服务器:“在模块88中找到。”
- 大语言模型:“我只想查看login函数的逻辑。”
- 大语言模型:调用
get_symbol_source(symbolName="login", moduleId="88")。- 服务器:仅返回'login'函数的源代码。
📚 详细文档
开发
- 构建:
npm run build - 测试:
npm test
限制
- 文件大小:服务器接受最大为50MB的输入文件(包)。
- 内存:解包的模块会缓存在RAM中。非常大的包(解包后数百MB)可能会耗尽服务器的可用内存,具体取决于你的环境。
微信扫一扫