Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Audits shipped apps for how easily they can be reverse engineered
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"reverse-shield": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-reverse-shield"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add reverse-shield -- npx -y @guardbee/mcp-reverse-shieldวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"reverse-shield": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-reverse-shield"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"reverse-shield": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-reverse-shield"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub GuardBee ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.6.1) เข้า registry 3 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Dechonet MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
30 security tools for AI agents: phishing links, exposure maps, DNS, SSL, PQC, history, pivots.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文
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, an iOS app, a game, 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, Il2CppDumper, Hopper or the browser's devtools) would get without any effort, with the fix for each — and suggest_fixes turns those fixes into a diff against your build config.
Telemetry is off by default. With
GUARDBEE_TELEMETRY=1it sends the server, tool, success, duration and short parameter values such as a file path; longer strings and fields likecontent,tokenorpasswordare 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, WebAssembly debug info and names ├─ electron fuses (RunAsNode, --inspect, NODE_OPTIONS, ASAR integrity), unpacked app code, code inside app.asar ├─ android APK and AAB: debuggable, R8/ProGuard missing, signing scheme, backup, plain React Native bundle, unstripped .so ├─ ios IPA and .app: Debug-configuration builds, development profiles, plain React Native bundle, .dSYM in the bundle, the executable ├─ engines Unity (IL2CPP metadata, Mono assemblies), PyInstaller, Java/Spring Boot JARs, Flutter (Dart obfuscation) ├─ native debug info, symbols, get-task-allow, hardened runtime, signing, PIE/NX/RELRO/canary (ELF, Mach-O, PE) ├─ secrets keys in everything above: dex, resources.arsc, plists, config files, Hermes bytecode, .so and executables └─ .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.
| Check | Severity | Target | What it gives away |
|---|---|---|---|
sourcemap_embeds_source | critical | web | Full original source via sourcesContent |
sourcemap_shipped / sourcemap_inline / sourcemap_publicly_reachable | high | web | Original file paths and structure |
eval_devtool_bundle | high | web | Dev bundle with each module's path |
bundle_secret | per key type | all | A working credential in client code, an app package or a binary |
wasm_debug_info | high | web | WebAssembly with DWARF: source files, lines, types |
unminified_bundle / dev_build_framework / wasm_name_section | medium | web | Readable code / framework dev runtime / named WebAssembly functions |
sourcemap_reference / internal_endpoint | low | web | Where the map lives / localhost, private IPs, staging hosts |
electron_fuse_run_as_node / electron_fuse_inspect_args | high | electron | Node runtime or debugger inside the signed app |
electron_app_unpacked | high | electron | App code as an editable folder |
electron_fuse_node_options / _asar_integrity_off / _load_outside_asar | medium | electron | Code injection and ASAR tampering |
apk_debuggable | critical | android | Debugger attach and run-as into app data |
apk_no_obfuscation / apk_js_bundle_plaintext / apk_unsigned | high | android | jadx output with real names / readable RN bundle / no tamper evidence |
apk_allow_backup / apk_v1_only_signature | medium | android | Data pulled via backup / Janus-style repackaging |
native_debug_info / native_debuggable_entitlement | high | native | Source-level debug data / lldb attach |
native_symbols_not_stripped / native_no_hardened_runtime / native_injection_entitlement / native_unsigned | medium | native | Named functions / dylib injection / patched copies run |
native_no_pie / native_no_nx | medium | native | Exploit-friendly fixed addresses / executable stack |
native_no_relro / native_no_stack_canary / native_adhoc_signed / native_build_path_leak | low | native | Hardening gaps and build-host details |
ios_debug_build / ios_js_bundle_plaintext / ios_dsym_shipped | high | ios | Unoptimised code with full symbols and preview stubs / readable RN bundle / full DWARF symbols in the bundle |
ios_development_profile | medium | ios | Debugger attach on registered devices |
unity_il2cpp_metadata / unity_mono_assemblies | high | engines | Every class, method and string of the game / C# scripts via dnSpy |
flutter_not_obfuscated | high | engines | Dart class and method names for blutter / reFlutter |
python_pyinstaller_bundle / java_not_obfuscated | high | engines | Decompilable .pyc files / Java classes with original names |
dotnet_not_obfuscated / dotnet_embedded_pdb | high | .NET | ILSpy/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.
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.#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).resources.arsc / resources.pb string pool (where strings.xml and google-services values end up), assets/ and res/raw/; iOS plists (GoogleService-Info.plist) and the executable; JSON/plist/.env/properties/YAML files in an ASAR, a JAR (Spring Boot application.properties) or a build folder; Hermes bytecode, .so libraries and native/.NET binaries by their printable strings. Only fixed-format keys are matched there, as in bundles. A Google/Firebase API key in an Android or iOS package is reported as medium: those ship by design and must be restricted to the app's package name or bundle id. .debug.dylib next to __preview.dylib; either one in a bundle means the Debug configuration was shipped.global-metadata.dat is flagged only when its standard header is intact (protected builds encrypt it); a Mono Assembly-CSharp.dll goes through the .NET name check.libapp.so, App.framework/App). --obfuscate renames everything the program defines to two- or three-letter names while the Dart VM's own names stay, so a snapshot passes when at least 10% of its identifiers are that short. Checked against one program built both ways with the Dart SDK's gen_snapshot: 1% without the flag, 31% (unstripped) and 37% (stripped) with it. Fewer than 200 identifiers is a note, not a verdict..debug_* (DWARF), name (function names) and sourceMappingURL; the code itself is not judged./hs/hsstatic/, WordPress /wp-includes/) and open-source libraries (jQuery, Bootstrap, polyfills, vendor bundles) are skipped, and a reachable map whose sources are all dependencies is not reported. Internal hosts count only when they point into the site (private IPs, .internal/.corp/.lan, its own staging hosts); the localhost URLs frameworks ship are ignored. A Google browser key is reported as medium (restrict it to the site's referrers), and a Supabase anon key is not reported, since the browser is meant to hold it (a service_role key still is).{
"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 npx @guardbee/mcp-reverse-shield scan ./build/MyApp.ipa npx @guardbee/mcp-reverse-shield suggest . --format=patch | git apply # review first: suggest . prints the same as text
| Tool | Purpose |
|---|---|
scan_artifact | Scan a file or directory: APK, AAB, IPA, iOS or macOS .app, Electron folder, app.asar, JAR, ELF/Mach-O/PE/.NET binary, JS bundle, source map, or a build output folder (Unity and Python builds included). Optional ignore and baseline |
suggest_fixes | Read the project's build config (Vite, webpack, Next.js, Angular, CRA, Android Gradle and manifest, React Native, electron-builder / Forge, .NET project files, Flutter) and return the changes as unified diffs. Never writes files |
scan_url | Fetch a live page, check its same-site bundles, follow sourceMappingURL and probe .map (third-party scripts are not fetched) |
list_checks | The 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 baseline: .reverse-shield-baseline.json exclude: -
ตัดมาแค่ช่วงต้น อ่านต่อใน repo