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 使用量控制在范围内。
相关
- 项目
- 项目
- 项目
- 项目
- 项目