mcpField
R
reverse-shield

reverse-shield

Local
github.com/GuardBeeSecurity1Updated 1d ago

About reverse-shield

An MCP server for developers who want to assess how much their shipped app reveals to reverse engineers. It scans web, Electron, Android, native, and .NET artifacts locally and reports findings with remediation guidance.

Key features

  1. 01Scan app builds and live sites
  2. 02Check web, Electron, Android, native, and .NET artifacts
  3. 03Grade findings from A to F
  4. 04List checks and suggested fixes
  5. 05Output SARIF for CI

Use cases

  1. 01Audit a release build before shipping
  2. 02Find exposed source maps or client-side credentials
  3. 03Add artifact checks to a CI pipeline

MCP support

Exposes tools to scan build artifacts and live URLs, and to list checks with remediation advice. MCP clients can use it to inspect shipped applications.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"guardbee-reverse-shield": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-reverse-shield"
]
}
}
}
Run commandnpx -y @guardbee/mcp-reverse-shield

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@guardbee/mcp-reverse-shield0.2.0

Tools

4

Saved tool list · updated 1d ago

ParameterTypeRequiredDescription
pathstringYesAbsolute or relative path to the artifact or build output directory
ignorearrayNoAccepted findings to leave out: a rule id, or rule:path-substring (e.g. bundle_secret:firebase-config.js)
excludearrayNoSkip files/dirs whose path contains one of these strings
includearrayNoOnly check files whose path contains one of these strings
baselinestringNoPath to a baseline written by `guardbee-reverse-shield scan --update-baseline`; the report then lists new and fixed findings
maxFilesintegerNoMaximum number of files to check in a directory (default: 5000)

Details

From the project README

@guardbee/mcp-reverse-shield

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文

npm version npm downloads License: MIT

An MCP server that tells you how much your shipped app gives a reverse engineer for free.

Reverse-engineering MCPs now let an agent take an app it has no source for — a web bundle, an Electron app, an APK, a native or .NET binary — and explain how a feature works, down to the binary. This package is the other side of that: point it at your own build artifact and it reports what such a tool (or a person with jadx, ILSpy, Hopper or the browser's devtools) would get without any effort, with the fix for each.

Telemetry is off by default. With GUARDBEE_TELEMETRY=1 it sends the server, tool, success, duration and short parameter values such as a file path; longer strings and fields like content, token or password are replaced with a placeholder. See @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

Everything runs locally and offline (except scan_url), with its own parsers for ASAR, the Electron fuse wire, binary AndroidManifest (AXML), DEX, ELF, Mach-O (including universal binaries and code signatures) and PE/.NET metadata — no apktool, jadx or binutils needed.

What it flags

CheckSeverityTargetWhat it gives away
sourcemap_embeds_sourcecriticalwebFull original source via sourcesContent
sourcemap_shipped / sourcemap_inline / sourcemap_publicly_reachablehighwebOriginal file paths and structure
eval_devtool_bundlehighwebDev bundle with each module's path
bundle_secretper key typewebA working credential in client code
unminified_bundle / dev_build_frameworkmediumwebReadable code / framework dev runtime
sourcemap_reference / internal_endpointlowwebWhere the map lives / localhost, private IPs, staging hosts
electron_fuse_run_as_node / electron_fuse_inspect_argshighelectronNode runtime or debugger inside the signed app
electron_app_unpackedhighelectronApp code as an editable folder
electron_fuse_node_options / _asar_integrity_off / _load_outside_asarmediumelectronCode injection and ASAR tampering
apk_debuggablecriticalandroidDebugger attach and run-as into app data
apk_no_obfuscation / apk_js_bundle_plaintext / apk_unsignedhighandroidjadx output with real names / readable RN bundle / no tamper evidence
apk_allow_backup / apk_v1_only_signaturemediumandroidData pulled via backup / Janus-style repackaging
native_debug_info / native_debuggable_entitlementhighnativeSource-level debug data / lldb attach
native_symbols_not_stripped / native_no_hardened_runtime / native_injection_entitlement / native_unsignedmediumnativeNamed functions / dylib injection / patched copies run
native_no_pie / native_no_nxmediumnativeExploit-friendly fixed addresses / executable stack
native_no_relro / native_no_stack_canary / native_adhoc_signed / native_build_path_leaklownativeHardening gaps and build-host details
dotnet_not_obfuscated / dotnet_embedded_pdbhigh.NETILSpy/dnSpy output close to the original source

list_checks returns the full catalog with fixes. Every result carries an A–F grade: F when anything critical (or several high findings) is exposed, A when nothing is.

How the trickier checks decide
  • R8/ProGuard: reads class descriptors from every classes*.dex and looks at classes under your application id (and under the packages of components your manifest names, for .debug-style ids). Dozens of descriptive class names with almost no one- or two-letter names means R8 did not run.
  • .NET obfuscation: reads the metadata #Strings heap. Known obfuscator markers (ConfuserEx, Dotfuscator, SmartAssembly, …) pass immediately; otherwise an assembly passes when at least 10% of its identifiers are one- or two-letter names, bare numbers or non-ASCII junk. Checked against an Obfuscar build (21%, passes) and 400 unobfuscated NuGet assemblies (383 flagged; the other 17 are resource-only assemblies with too few names to judge).
  • Private keys: only reported when base64 key material follows the PEM header — crypto libraries bundled into apps carry the header as a string constant.
  • Repeats: one key in 30 chunks is one finding (“also in 29 other files”), and long lists of unminified files collapse into one.

Quick start

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

Then ask your agent: “How easy is it to reverse engineer ./release/MyApp.app? Fix what you can in the build config.”

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

Tools

ToolPurpose
scan_artifactScan a file or directory: APK, .app, Electron folder, app.asar, ELF/Mach-O/PE/.NET binary, JS bundle, source map, or a build output folder
scan_urlFetch a live page, check its same-site bundles, follow sourceMappingURL and probe <bundle>.map (third-party scripts are not fetched)
list_checksThe check catalog with what each finding gives away and how to fix it

Directories are walked including dist/, build/ and out/ (that is the point); node_modules, VCS and cache folders are skipped, and a macOS .app or Electron folder found inside is scanned as one unit — its fuses, its ASAR and its own executable, not the bundled third-party frameworks.

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

Limits

  • Obfuscation is judged from names, not control flow: a build that only renames passes, and string encryption or control-flow flattening is not measured.
  • Web checks look at what is shipped; they cannot tell whether a key is meant to be public (some, like Firebase web keys, are restricted server-side). Rotate or restrict, then add the path to exclude.
  • Native hardening checks (PIE/NX/RELRO/canary) are exploit-mitigation signals rather than reverse-engineering ones; they are reported low/medium for that reason.
  • iOS .ipa and Android App Bundles (.aab) are not unpacked yet; scan the .app inside the .ipa, or a universal APK built from the bundle.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.