关于 reverse-shield
面向开发者的 MCP 服务,用于评估已发布应用向逆向分析者暴露的信息。它可在本地扫描 Web、Electron、Android、原生及 .NET 构建产物,并提供问题评级和修复建议。
主要功能
- 01扫描应用构建产物与线上站点
- 02检查 Web、Electron、Android、原生及 .NET 文件
- 03按 A 至 F 评级问题
- 04列出检查项与修复建议
- 05为 CI 输出 SARIF
适用场景
- 01发布前审计构建版本
- 02查找暴露的源映射或客户端凭据
- 03在 CI 流水线中加入产物检查
MCP 相关
提供扫描构建产物和线上 URL 的工具,以及带修复建议的检查项列表。MCP 客户端可借此检查已发布的应用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 产物或构建输出目录的绝对路径或相对路径 |
| ignore | array | 否 | 要排除的已接受发现项:规则 ID,或 rule:path-substring(例如 bundle_secret:firebase-config.js) |
| exclude | array | 否 | 跳过路径包含以下任一字符串的文件/目录 |
| include | array | 否 | 仅检查路径中包含以下字符串之一的文件 |
| baseline | string | 否 | 由 `guardbee-reverse-shield scan --update-baseline` 写入的基线文件路径;之后,报告会列出新增和已修复的问题 |
| maxFiles | integer | 否 | 目录中要检查的文件数上限(默认值:5000) |
详细介绍
@guardbee/mcp-reverse-shield
一个 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。