代码反混淆服务器

一款专为大型语言模型优化的代码反混淆服务器,能够解包、分析和导航混淆或打包的JavaScript代码。

  • by MadeByTokens
  • TypeScript
  • 本地部署
  • 18 星标
  • 更新于
在 GitHub 查看 MadeByTokens/deobfuscate-mcp-server

使用说明

卸载MCP服务器

一 LLM优化 模型上下文协议(MCP)服务器,旨在帮助大型语言模型进行逆向工程、导航和理解压缩和捆绑的JavaScript代码。

为什么是这个服务器?

标准的“美化者”只格式化代码,使LLM难以处理溢出上下文窗口的大量线性文本文件。此服务器将压缩代码视为 检索数据库,允许LLM:

  1. 去混淆和解开:用途 webcrack 将Webpack/Browserify捆绑包拆分为单独的模块。
  2. 查看架构:在读取代码之前,返回文件结构(导出、函数)的JSON摘要。
  3. 随机导航:按需阅读特定模块(get_module)而不是整个文件。
  4. 语义搜索:查找数千个非捆绑模块中存在特定字符串或模式的位置。

特性

  • 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的标准预处理格式。
  • 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

客户端配置

要将此服务器与您最喜欢的LLM客户端一起使用,请添加以下配置。

克劳德代码

在终端中运行以下命令:

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 --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

LLM工作流示例

  1. 用户:“分析此压缩文件: bundle.min.js..."
  2. LLM:通话 deobfuscate(code="...", skipVendor=true).
    • 服务器:“脱毒完成。未绑定15个模块。跳过45个供应商模块…”
  3. LLM:“好的,我看到入口点需要模块42。那是什么?"
  4. LLM:通话 get_module(id="42").
    • 服务器:返回模块42的代码。
  5. LLM“‘登录’功能在哪里定义?”
  6. LLM:通话 search_modules(query="function login").
    • 服务器:“在模块88中找到。”
  7. LLM:“我只是想看看登录功能逻辑。”
  8. LLM:通话 get_symbol_source(symbolName="login", moduleId="88").
    • 服务器:仅返回'login'函数的源代码。

发展

  • 构建: npm run build
  • 测试: npm test

限制

  • 文件大小:服务器最多接受输入文件(捆绑包) 50MB.
  • 记忆:未捆绑的模块缓存在RAM中。根据您的环境,非常大的捆绑包(未捆绑的数百MB)可能会耗尽服务器的可用内存。