mcpField
R
reverse-shield

reverse-shield

本地服务
github.com/GuardBee安全2今天更新

关于 reverse-shield

面向开发者的 MCP 服务,用于评估已发布应用向逆向分析者暴露的信息。它可在本地扫描 Web、Electron、Android、原生及 .NET 构建产物,并提供问题评级和修复建议。

主要功能

  1. 01扫描应用构建产物与线上站点
  2. 02检查 Web、Electron、Android、原生及 .NET 文件
  3. 03按 A 至 F 评级问题
  4. 04列出检查项与修复建议
  5. 05为 CI 输出 SARIF

适用场景

  1. 01发布前审计构建版本
  2. 02查找暴露的源映射或客户端凭据
  3. 03在 CI 流水线中加入产物检查

MCP 相关

提供扫描构建产物和线上 URL 的工具,以及带修复建议的检查项列表。MCP 客户端可借此检查已发布的应用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"guardbee-reverse-shield": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-reverse-shield"
]
}
}
}
启动命令npx -y @guardbee/mcp-reverse-shield

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@guardbee/mcp-reverse-shield0.3.1

工具

4

收录的工具列表 · 更新于 今天

参数类型必填说明
pathstring是产物或构建输出目录的绝对路径或相对路径
ignorearray否要排除的已接受发现项:规则 ID,或 rule:path-substring(例如 bundle_secret:firebase-config.js)
excludearray否跳过路径包含以下任一字符串的文件/目录
includearray否仅检查路径中包含以下字符串之一的文件
baselinestring否由 `guardbee-reverse-shield scan --update-baseline` 写入的基线文件路径;之后,报告会列出新增和已修复的问题
maxFilesinteger否目录中要检查的文件数上限(默认值:5000)

详细介绍

@guardbee/mcp-reverse-shield

🇬🇧 英语 | 🇹🇷 土耳其语 | 🇨🇳 中文

npm 版本 npm 下载量 许可证:MIT

一个 MCP 服务,可告诉你已发布的应用为逆向工程人员免费提供了多少信息。

现在,逆向工程 MCP 可以让 Agent 分析一个没有源代码的应用——无论是 Web 包、Electron 应用、APK、原生二进制文件还是 .NET 二进制文件——并解释功能如何运作,甚至深入到二进制层面。这个包则从另一个角度出发:将你自己的构建产物交给它,它会报告这类工具(或使用 jadx、ILSpy、Hopper 或浏览器开发者工具的人)无需任何努力就能获取哪些信息,并为每一项提供修复方案。

默认情况下,遥测处于关闭状态。设置 GUARDBEE_TELEMETRY=1 后,它会发送服务、工具、成功状态、耗时和较短的参数值(例如文件路径);较长的字符串以及 content、token 或 password 等字段会替换为占位符。请参阅 @guardbee/mcp-telemetry。

Claude ──► reverse-shield ──► your build artifact / live site
              │
              ├─ web       source maps (shipped, inline, publicly reachable), unminified / dev bundles, keys, internal hosts
              ├─ electron  fuses (RunAsNode, --inspect, NODE_OPTIONS, ASAR integrity), unpacked app code, code inside app.asar
              ├─ android   debuggable, R8/ProGuard missing, signing scheme, backup, plain React Native bundle, unstripped .so
              ├─ native    debug info, symbols, get-task-allow, hardened runtime, signing, PIE/NX/RELRO/canary (ELF, Mach-O, PE)
              └─ .NET      obfuscation missing, embedded PDB, leaked build paths

除了 scan_url 之外,所有内容都在本地离线运行;它自带 ASAR、Electron 熔断器线路、二进制 AndroidManifest(AXML)、DEX、ELF、Mach-O(包括通用二进制文件和代码签名)以及 PE/.NET 元数据解析器,无需 apktool、jadx 或 binutils。

它会检测什么

检查项严重程度目标会泄露什么
sourcemap_embeds_source严重web通过 sourcesContent 泄露完整原始源代码
sourcemap_shipped / sourcemap_inline / sourcemap_publicly_reachable高web原始文件路径和结构
eval_devtool_bundle高web包含各模块路径的开发版包
bundle_secret视密钥类型而定web客户端代码中可用的凭据
unminified_bundle / dev_build_framework中web可读代码 / 框架开发版运行时
sourcemap_reference / internal_endpoint低web映射文件的位置 / localhost、私有 IP、预发布主机
electron_fuse_run_as_node / electron_fuse_inspect_args高electron已签名应用中的 Node 运行时或调试器
electron_app_unpacked高electron可编辑文件夹形式的应用代码
electron_fuse_node_options / _asar_integrity_off / _load_outside_asar中electron代码注入和 ASAR 篡改
apk_debuggable严重android调试器附加以及通过 run-as 访问应用数据
apk_no_obfuscation / apk_js_bundle_plaintext / apk_unsigned高android包含真实名称的 jadx 输出 / 可读的 RN 包 / 无篡改证据
apk_allow_backup / apk_v1_only_signature中android通过备份提取的数据 / 类 Janus 的重新打包
native_debug_info / native_debuggable_entitlement高native源代码级调试数据 / lldb 附加
native_symbols_not_stripped / native_no_hardened_runtime / native_injection_entitlement / native_unsigned中native带名称的函数 / dylib 注入 / 可运行已修补的副本
native_no_pie / native_no_nx中native易于利用的固定地址 / 可执行栈
native_no_relro / native_no_stack_canary / native_adhoc_signed / native_build_path_leak低native加固缺陷和构建主机详情
dotnet_not_obfuscated / dotnet_embedded_pdb高.NET接近原始源代码的 ILSpy/dnSpy 输出

list_checks 会返回包含修复方法的完整目录。每项结果都会附带 A–F 评级:暴露任何严重问题(或多个高危问题)时为 F,没有问题时为 A。

较复杂的检查如何判定
  • R8/ProGuard:读取每个 classes*.dex 中的类描述符,并检查应用 ID 下的类(对于 .debug 风格的 ID,也会检查清单中指定组件所在的包)。如果存在数十个描述性类名,而单字母或双字母类名几乎没有,则说明 R8 未运行。
  • .NET 混淆:读取元数据 #Strings 堆。已知混淆器标记(ConfuserEx、Dotfuscator、SmartAssembly,等等)会立即通过;否则,当至少 10% 的标识符为单字母或双字母名称、纯数字或非 ASCII 乱码时,程序集即为通过。已使用 Obfuscar 构建进行检查(21%,通过),并检查了 400 个未混淆的 NuGet 程序集(383 个被标记;其余 17 个是仅含资源的程序集,名称太少,无法判定)。
  • 私钥:仅当 PEM 头后跟有 base64 密钥材料时才会报告——应用中捆绑的加密库会将该头作为字符串常量。
  • 重复项:同一个密钥出现在 30 个分块中,只算一项发现(“另有 29 个文件包含此项”);大量未压缩文件的列表也会合并为一项。

快速开始

{
  "mcpServers": {
    "guardbee-reverse-shield": {
      "command": "npx",
      "args": ["-y", "@guardbee/mcp-reverse-shield"]
    }
  }
}

然后询问你的 Agent:“对 ./release/MyApp.app 进行逆向工程有多容易?修复你能在构建配置中解决的问题。”

npx @guardbee/mcp-reverse-shield scan ./dist --fail-on=high
npx @guardbee/mcp-reverse-shield scan ./app/build/outputs/apk/release/app-release.apk
npx @guardbee/mcp-reverse-shield scan "/Applications/My App.app" --format=json
npx @guardbee/mcp-reverse-shield scan https://app.example.com --format=sarif > reverse-shield.sarif

工具

工具用途
scan_artifact扫描文件或目录:APK、.app、Electron 文件夹、app.asar、ELF/Mach-O/PE/.NET 二进制文件、JS 包、源映射文件或构建输出文件夹
scan_url获取实时页面,检查其同站点的包,跟踪 sourceMappingURL 并探测 <bundle>.map(不会获取第三方脚本)
list_checks检查项目录,说明每项发现会泄露哪些信息以及如何修复

会遍历目录,包括 dist/、build/ 和 out/(这正是其目的);会跳过 node_modules、VCS 和缓存文件夹;发现其中的 macOS .app 或 Electron 文件夹时,会将其作为一个整体扫描——检查其 fuse、ASAR 和自身可执行文件,而不扫描捆绑的第三方框架。

guardbee.yml:

reverse-shield:
  fail-on: high
  max-files: 5000
  exclude:
    - "vendor/"

CI

- run: npx @guardbee/mcp-reverse-shield scan ./dist --fail-on=high --format=sarif > reverse-shield.sarif
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: reverse-shield.sarif

限制

  • 混淆程度根据名称而非控制流判断:仅重命名的构建会通过,不会检测字符串加密或控制流平坦化。
  • Web 检查会查看发布的内容;无法判断某个密钥是否有意公开(例如,有些 Firebase Web 密钥会在服务端受到限制)。请轮换或限制密钥,然后将路径添加到 exclude。
  • 原生加固检查(PIE/NX/RELRO/canary)反映的是漏洞利用缓解措施,而非逆向工程防护,因此会被报告为低/中风险。
  • 目前不会解包 iOS .ipa 和 Android App Bundle(.aab);请扫描 .ipa 内的 .app,或扫描从该 Bundle 构建的通用 APK。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。