vmoranv/jshookmcp

A search-first, profile-aware reverse-engineering workspace for AI agents — 735 tools across 36 domains in one MCP server.

📦 什么是 @jshookmcp/jshook?

这是一个以搜索为优先、具备配置感知能力的逆向工程工作空间,以 MCP (Model-Context-Protocol) 服务器形式运行。它让 AI 代理(如 Claude Desktop、Cursor)能够与丰富的前端及二进制分析工具箱交互——从浏览器自动化到 WASM 反汇编——而无需预先加载数千个工具结构描述。


🎯 核心理念

  • MCP 服务器 – 暴露统一的 JSON-RPC 风格接口,供 AI 代理调用。
  • 配置文件 (Profiles) – 提供三种轻量级工具集(search 约 3K tokens、workflow、full 约 40K tokens)。代理从极小的配置文件开始,并随着任务需求“升级”,以保持 LLM token 使用量在低水平。
  • 运行时恢复 – 可流式的 HTTP 会话可在断开连接后恢复浏览器附加状态、覆盖率数据及已启用的域,同时保持每个客户端状态的隔离。

🔧 主要功能(概览)

领域 功能
浏览器自动化 通过 CDP 驱动 Chromium 或 Camoufox、反检测预设、显式输入 CAPTCHA 解决、HTTPS-MITM、HTTP/2 帧构建、弹出窗口/下载/权限拦截。
网络拦截 自动生成 HTTPS CA、WebSocket 捕获、GraphQL 内省、Burp Suite 桥接。
JS 分析 LLM 辅助去混淆、加密例程检测、AST 转换、源码映射 (source-map) 重建、脚本提取/重播。
WASM RE 基于 wabt 的反汇编 (wasm2wat, wasm-decompile, wasm-objdump)、Binaryen 优化、分段解析、差异比对、混淆检测、检测。
二进制与进程取证 Frida/Ghidra/IDA 桥接、硬件断点、PE 内省、内存读写、交叉引用图。
Android/APK 静态分类、清单转储、apktool 解码/构建、jadx 反编译、DEX 扫描、原生库列表、unidbg 模拟。
协调 具备进度/取消功能的任务队列、多代理会话处理、覆盖率报告。
扩展性 热重载插件、声明式 YAML 工作流、自动发现域(内置 36 个)。

📚 典型使用场景

情境 如何使用 jshook
浏览压缩后的包 search_tools → deobfuscate → search_in_scripts → understand_code (使用 core 域)。
解决 CAPTCHA 启动 Camoufox、截图、将图像喂给 LLM 进行手动输入、重播解决方案。
捕获并重播 OAuth 流程 启动 MITM 代理 (proxy_start)、收集请求、内省 GraphQL、重播序列。
逆向 WASM 加密例程 转储模块、反汇编、生成 Hook、设置内存断点。
审计可疑 APK 运行静态分类、转储清单、使用 jadx 反编译、扫描 DEX 中的可疑模式。
恢复中断的浏览器会话 通过可流式的 HTTP 传输重新连接;服务器会恢复先前的 CDP 附加与覆盖率状态。
构建自定义工作流 列出可用的扩展工作流,并将其作为单个工具执行 (run_extension_workflow)。
Hook 实时进程 使用 Frida 桥接来启动/附加、安装拦截器并枚举函数。

🚀 AI 代理客户端快速入门

将服务器添加到您的 MCP 客户端配置(以 Claude Desktop / Cursor 为例):

{
  "mcpServers": {
    "jshook": {
      "command": "npx",
      "args": ["-y", "@jshookmcp/jshook@latest"],
      "env": {
        "MCP_TOOL_PROFILE": "search",
        "npm_config_omit": "optional"
      }
    }
  }
}

search 配置文件仅加载最小的 3K token 元数据。

如果您希望多个代理共享繁重的运行时(浏览器、嵌入等),请启动共享守护进程:

pnpm build
pnpm daemon   # 在 127.0.0.1:3000 运行 Streamable HTTP 服务器

然后将每个客户端指向 http://127.0.0.1:3000/mcp。每个客户端仍会获得隔离的 MCP 会话。


🏗️ 架构概览

  • 运行时注册表 – 域从 manifest.ts 中发现;添加文件会自动创建新域。
  • 延迟初始化 – 工具处理程序仅在首次调用时实例化,保持启动速度。
  • 混合搜索 – search_tools 使用 BM25 + 可选的向量排名来寻找正确工具,无需加载整个结构描述。
  • 工具注解 – 每个工具声明 readOnlyHint、destructiveHint、idempotentHint、openWorldHint 以实现更安全的代理编排。
  • 传输对称性 – stdio 与 Streamable HTTP 暴露完全相同的工具接口;后者可多路复用会话并在重新连接后恢复状态。

📦 从源码构建/运行

# 先决条件
#   Node 22.22.2+   pnpm 10.x
pnpm install          # 安装依赖(除非需要,否则省略选用运行时)
pnpm build            # 编译 TypeScript
pnpm start            # 运行服务器 (stdio 模式)
# 或
pnpm daemon           # 运行 HTTP 守护进程

其他脚本:

  • pnpm dev – 监视模式开发。
  • pnpm check – 检查、格式化、类型检查并验证生成的元数据。
  • pnpm test / pnpm test:e2e – 单元测试与端到端测试套件。

📄 许可

AGPL-v3 (参阅 LICENSE)。


总结: @jshookmcp/jshook 是一个全栈、可扩展的逆向工程平台,可通过轻量级 MCP 接口由 LLM 代理驱动,提供从浏览器自动化到低级二进制分析的所有功能,同时将 token 使用量控制在范围内。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目