JSHookMCP WASM 逆向工程完全指南:反汇编、混淆检测与二进制插桩
【免费下载链接】jshookmcpjs hook toolkit that all you need项目地址: https://gitcode.com/gh_mirrors/js/jshookmcp
JSHookMCP(@jshookmcp/jshook)是一款面向 AI Agent 的前端逆向工程工具箱:它以 MCP(Model Context Protocol)服务器的形式运行,内置 735 个工具、覆盖 36 个能力域,把"抓包、反混淆、WASM 反汇编、二进制插桩、内存取证"全部装进一个统一的工具面。本指南带你用最快的方式上手其中最有价值的三条主线:WASM 反汇编、WASM 混淆检测、多层级二进制插桩——无需手写脚本,对 AI 说一句"帮我反汇编这个 wasm"即可完成。
为什么 WASM 逆向需要专门工具链 🎯
如今越来越多网站把核心逻辑(加密、签名、风控、验证码算法)编译成 WebAssembly 塞进前端。面对一段.wasm字节码,你通常需要:
- 提取:从正在运行的页面里把 WASM 模块字节抓下来;
- 反汇编:转成可读的 WAT 文本或类 C 伪代码;
- 检测混淆:判断它是否做了控制流平坦化、不透明谓词、死代码填充;
- 插桩追踪:在函数入口或基本块插入探针,观察真实执行路径。
JSHookMCP 把这四步做成了 17 个开箱即用的wasm_*工具,底层打通了 wabt(wasm2wat/wasm-decompile/wasm-objdump/wasm2c)和 Binaryen(wasm-opt),完整工具清单见 docs/reference/domains/wasm.md,工具定义源码在 src/server/domains/wasm/definitions.ts。
一键配置:最快接入步骤 ⚡
JSHookMCP 无需全局安装。在 Claude Desktop / Cursor 等 MCP 客户端的claude_desktop_config.json中加入:
{ "mcpServers": { "jshook": { "command": "npx", "args": ["-y", "@jshookmcp/jshook@latest"], "env": { "MCP_TOOL_PROFILE": "search" } } } }search档只加载约 3K token 的工具元数据,靠 BM25 + 向量混合检索按需找工具,适合新手起步;- 任务变复杂后把
MCP_TOOL_PROFILE提升为workflow或full(全部 735 个工具)即可。
完整配置说明见 docs/guide/configuration.md,快速入门见 docs/guide/getting-started.md。
WASM 反汇编三步走:从页面到伪代码 🔍
推荐工作流是经典的三段式(也是官方 README 给出的标准场景):
| 步骤 | 工具 | 做什么 |
|---|---|---|
| ① 提取 | wasm_dump | 从当前页面导出已捕获的 WASM 模块;若页面没暴露,autoInject=true会自动注入字节捕获钩子并刷新页面重试 |
| ② 反汇编 | wasm_disassemble | 用wasm2wat把.wasm转成 WAT 文本格式 |
| ③ 反编译 | wasm_decompile | 用wasm-decompile转成带类型信息的类 C 伪代码 |
配套的辅助工具同样值得了解:
wasm_inspect_sections:用wasm-objdump查看节区、导入/导出、内存与表结构;wasm_inspect:纯 TypeScript结构解析器,不依赖 wabt 也能输出类型、导入、导出、函数名(含 name section 恢复)等结构化 JSON,是 wabt 缺失时的独立兜底路径;wasm_string_extract:按 section 分组提取可打印字符串,自动识别 url / base64 / hex-hash / 文件路径,并支持 name section 函数名恢复;wasm_offline_run:用 wasmtime / wasmer 直接离线运行导出的函数,验证算法逻辑;wasm_memory_inspect:检查页面导出的WebAssembly.Memory,多实例页面可精确指定实例下标。
对新手最直观的体验是:让 AI Agent 依次调用这三个工具,几秒钟就能拿到一份可读的伪代码,而不用自己搭 wabt 环境。
WASM 混淆检测:一眼识别保护手段 🛡️
拿到伪代码后,先别急着硬读——用wasm_detect_obfuscation做一次体检。它会扫描四类典型混淆模式:
- 不透明谓词(opaque predicates)
- 控制流平坦化(control-flow flattening)
- 死代码 / 无效操作填充(bogus ops)
- 常量编码
verbose=true时输出会附带详细的模式证据,方便你判断混淆强度、决定是先做wasm_optimize(wasm-opt的 O1~O4/Os/Oz 档位)简化,还是直接上插桩动态追踪。
三层二进制插桩:从 JS 代理到基本块探针 🕵️
JSHookMCP 在wasm域里提供了三个粒度递进的插桩工具,这是它与"包一层字符串"式工具的根本区别:
wasm_instrument_trace(JS 层):为.wasm模块生成 JS 插桩包装,代理 JS 可见的导出函数,追踪 call / memory / branch / loop / local 事件,成本最低;wasm_instrument_binary(函数入口层):真正的 WASM 级插桩——wasm2wat反汇编后在每个函数入口插入对导入trace_fn的调用,再经wat2wasm重新汇编,重写 code section 使每个函数入口可观测;wasm_instrument_block(基本块层):在每个 block/loop/if 体入口(含函数入口)插入对trace_block的调用,覆盖br/br_if/br_table分支目标——因为 Wasm 把分支解析为 block/loop/if 标签,所以控制流入口能被完整观测。
后两级属于真正的二进制插桩,宿主只需在实例化时提供对应的 trace 导入函数即可。此外wasm_diff支持对"原版 vs 补丁版"两个 wasm 做函数级 + WAT 行级 unified diff,是漏洞研究里做 patch-diff 的利器。
组合拳:JS 反混淆 + 进程级二进制插桩 🔗
WASM 很少孤立存在——它通常藏在一坨被混淆的 JS 里。JSHookMCP 的core域提供了完整的 JS 侧配合工具:
search_in_scripts:按关键词/正则在已采集脚本中检索;deobfuscate:基于 webcrack 的 JS 反混淆,支持 bundle 解包与 VM 级深度反混淆;js_deobfuscate_jsvmp:还原 JSVMP/VM 保护的 JavaScript 字节码;understand_code:对代码结构、行为与风险做语义分析。
对应实现位于 src/modules/deobfuscator/,例如 LLMDeobfuscator.ts 与 JSVMPDeobfuscator.ts。官方推荐的路径是:search_tools→deobfuscate→search_in_scripts→understand_code,工具详情见 docs/reference/domains/core.md。
如果目标不止是前端,还有 46 个工具的binary-instrument域可用:Frida 桥接(spawn/attach/内存扫描/符号枚举)、Ghidra 与 IDA 反编译桥接、系统调用 hook、APK 加固识别与密钥候选扫描等,见 docs/reference/domains/binary-instrument.md。典型链路是:wasm_dump→wasm_disassemble→generate_hooks→memory_breakpoint,从 WASM 一路跟到进程内存断点。
常用命令与文档索引 📚
| 目的 | 命令/入口 |
|---|---|
| 构建后启动 | pnpm build && pnpm start |
| 多 Agent 共享守护进程 | pnpm daemon(Streamable HTTP,默认回环绑定) |
| 运行单测 | pnpm test |
| 查看某会话激活了哪些域 | 调用coverage_report元工具 |
- 项目主文档:README.md(含能力总览与全部使用场景表)
- WASM 域工具清单:docs/reference/domains/wasm.md
- 二进制插桩域工具清单:docs/reference/domains/binary-instrument.md
- 最佳实践与架构说明:docs/guide/best-practices.md
💡 小贴士:所有工具都带有
readOnlyHint/destructiveHint等安全标注,配合describe_tool查看 JSON Schema、call_tool做参数校验后再执行,新手也能放心让 AI 代劳逆向工作流。
【免费下载链接】jshookmcpjs hook toolkit that all you need项目地址: https://gitcode.com/gh_mirrors/js/jshookmcp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考