Files
hello_js_reverse_skill/README.md
T

257 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# JS 逆向分析 Skill
面向 Web 逆向分析与接口签名还原场景的 Skill,围绕 `camoufox-reverse` MCP 构建单一工作流:先用 Camoufox 反检测浏览器完成网络捕获、源码定位、Hook 调试与反检测验证,再按需落地到 Node.js 或 Python 算法还原与自动化调用。
## 核心能力
- **双语言算法还原**: Node.js (`crypto` / `crypto-js`) 与 Python (`hashlib` / `pycryptodome`) 双路径实现
- **加密算法还原**: MD5/SHA/AES/DES/RSA/HMAC/Base64 等常见加密算法的纯算法复现
- **JS 混淆还原**: OB混淆、控制流平坦化、eval打包、自定义VM/JSVMP 等混淆类型的分析策略
- **JSVMP 行为追踪**: Hook/插桩/日志/源码级插桩四板斧(v2.5.0 新增第四板斧),从行为层面追踪 JS 虚拟机保护的签名生成链路,对RS 5/6、Akamai sensor_data、webmssdk、obfuscator.io 通用有效(详见专项指南)
- **Cookie 归因分析**: `analyze_cookie_sources` 融合 HTTP Set-Cookie 与 JS document.cookie 日志,一次性解答"这个 Cookie 到底是谁写的"(v2.5.0 新增)
- **反爬类型分档决策(v2.6.0)**:签名型(RS/Akamai)/ 行为型(TK/JY)/ 纯混淆 三类反爬的工具路径完全不同,内置顶层决策框架,避免"observer effect 破坏签名"的经典陷阱
- **动态 Cookie 逆向**: eval首包、api预热、浏览器指纹等 Cookie 生成机制的破解
- **WASM 逆向**: WebAssembly 加密模块的加载、环境补全和调用
- **协议层对抗**: TLS 指纹检测、HTTP/2 强制、频率限制等协议层防护的应对
- **反检测浏览器**: Camoufox C++ 引擎级指纹伪装,绕过 Cloudflare/RS/JY等反爬检测
- **单 MCP 工作流**: 统一使用 `camoufox-reverse` 完成源码搜索、Hook 注入、函数追踪、网络分析、请求拦截与反检测验证
- **错误排查体系**: 完整的请求失败排查流程和签名值不一致排查方法论
- **Codex/Claude Code 完整适配**: 内置 Agent 授权指令框架,确保 AI 全力协助完成分析任务
## 快速使用
### 方式一:AI 对话框直接安装(推荐)
在你的 AI 编码工具(Cursor / Claude Code / codex 等)的对话框中输入:
```
请帮我配置skill并在后续触发相关操作的时候查阅该skill:https://github.com/WhiteNightShadow/hello_js_reverse_skill
```
AI 会自动完成下载、配置,并在后续 JS 逆向相关任务中自动调用该 Skill。
### 方式二:手动安装
将本仓库克隆到对应 AI 工具的 skills 目录下:
**Cursor:**
```bash
git clone https://github.com/WhiteNightShadow/hello_js_reverse_skill.git ~/.cursor/skills/hello_js_reverse_skill
```
**Claude Code(Codex CLI):**
```bash
git clone https://github.com/WhiteNightShadow/hello_js_reverse_skill.git ~/.codex/skills/hello_js_reverse_skill
```
**VSCode(Copilot / Cline 等插件):**
```bash
git clone https://github.com/WhiteNightShadow/hello_js_reverse_skill.git ~/.vscode/skills/hello_js_reverse_skill
```
> 安装完成后,AI Agent 会自动读取 `SKILL.md` 获取 JS 逆向分析能力。当你在对话中涉及接口签名分析、反爬对抗、动态 Cookie、混淆 JS、WASM 或浏览器环境调试等场景时,Skill 会自动激活。
## 项目结构
```
hello_js_reverse_skill/
├── SKILL.md # 技能定义(AI Agent 读取的核心文件)
├── README.md # 项目文档
│
├── references/ # 参考文档(知识库)
│ ├── workflow-overview.md # 工作流总览与解法模式决策树
│ ├── crypto-patterns.md # 加密算法识别与 Node.js/Python 双语言还原代码
│ ├── obfuscation-guide.md # JS 混淆类型识别与还原策略
│ ├── hook-techniques.md # Hook 技术大全(13种 Hook 模板)
│ ├── anti-debug.md # 反调试对抗手册(7种绕过方案)
│ ├── environment-patch.md # 环境补全指南(VM沙箱/WASM/jQuery/XHR)
│ ├── protocol-analysis.md # 协议层分析(TLS/HTTP2/UA/频率限制)
│ ├── mcp-cookbook.md # MCP 工具使用手册(5大场景操作步骤)
│ ├── jsvmp-analysis.md # JSVMP 虚拟机保护专项分析指南(三板斧方法论)
│ └── troubleshooting.md # 错误排查指南(请求失败/签名不一致/环境问题)
│
├── scripts/ # 工具脚本
│ ├── check-deps.sh # 环境依赖检查(Node.js + Python)
│ ├── sandbox-runner.js # VM 沙箱执行器(CLI工具)
│ ├── hook-generator.js # Hook 代码生成器(10种Hook模板)
│ └── crypto-identifier.js # 加密算法识别器(密文特征分析)
│
├── templates/ # 项目模板(按解法模式和语言分类)
│ ├── node-request/ # 模式A (Node.js):纯算法还原
│ │ ├── main.js
│ │ ├── utils/encrypt.js
│ │ ├── utils/request.js
│ │ └── package.json
│ ├── python-request/ # 模式A (Python):纯算法还原
│ │ ├── main.py
│ │ ├── utils/sign.py
│ │ ├── utils/request.py
│ │ ├── config/headers.json
│ │ ├── config/keys.json
│ │ └── requirements.txt
│ ├── vm-sandbox/ # 模式B:VM 沙箱执行
│ │ ├── main.js
│ │ ├── utils/sandbox.js
│ │ ├── utils/request.js
│ │ └── package.json
│ ├── wasm-loader/ # 模式C:WASM 加载还原
│ │ ├── main.js
│ │ ├── utils/wasm-loader.js
│ │ ├── utils/env-patch.js
│ │ └── package.json
│ └── browser-auto/ # 模式D:浏览器自动化
│ ├── main.js
│ └── package.json
│
└── examples/ # 示例
└── demo-analysis.md # 完整分析流程示例
```
## 快速开始
### 1. 环境检查
```bash
bash scripts/check-deps.sh
```
### 2. 作为 Cursor Skill 使用
将本目录放置到 `.cursor/skills/` 下,AI Agent 会自动读取 `SKILL.md` 获取逆向分析能力。
### 3. 工具脚本
**加密算法识别**:
```bash
node scripts/crypto-identifier.js "e10adc3949ba59abbe56e057f20f883e"
```
**生成 Hook 代码**:
```bash
node scripts/hook-generator.js --type=cookie
node scripts/hook-generator.js --type=xhr --target="/api/data"
node scripts/hook-generator.js --type=all
```
**VM 沙箱执行**:
```bash
node scripts/sandbox-runner.js obfuscated.js --extract-cookie --verbose
```
### 4. 使用项目模板
根据分析结果选择合适的模板:
| 场景 | 语言 | 模板 | 何时使用 |
|------|------|------|---------|
| 标准加密算法 | Node.js | `templates/node-request/` | 加密可用 crypto 库还原 |
| 标准加密算法 | Python | `templates/python-request/` | 加密可用 hashlib/pycryptodome 还原 |
| 动态 Cookie | Node.js | `templates/vm-sandbox/` | 服务端返回 JS 生成 Cookie |
| WASM 加密 | Node.js | `templates/wasm-loader/` | 加密在 .wasm 中实现 |
| TLS/环境依赖 | Node.js | `templates/browser-auto/` | 无法脱离浏览器环境 |
**Node.js 项目:**
```bash
cp -r templates/node-request/ my_project/
cd my_project && npm install
# 修改 main.js 中的配置和加密逻辑
node main.js
```
**Python 项目:**
```bash
cp -r templates/python-request/ my_project/
cd my_project && pip install -r requirements.txt
# 修改 main.py 中的配置和 utils/sign.py 中的签名逻辑
python main.py
```
## MCP 工具集成
本 Skill 只围绕 [`camoufox-reverse` MCP](https://github.com/WhiteNightShadow/camoufox-reverse-mcp) 服务器组织能力(Camoufox 反检测浏览器,**65 个工具,v0.5.0 签名型反爬兼容改造**):
- 源码级插桩 `instrument_jsvmp_source(mode="ast")` — MCP 侧 esprima 实现,挑战页可用
- 签名安全观察 `hook_jsvmp_interpreter(mode="transparent")` — 仅 prototype getter 替换
- Cookie 归因 `analyze_cookie_sources` — 区分 Set-Cookie 与 document.cookie
- 响应链追踪 `navigate` 返回 `redirect_chain`/`final_status`,秒识反爬类型
| 核心工具 | 用途 |
|---------|------|
| `launch_browser` / `navigate` | 启动反检测浏览器并导航到目标页面 |
| `search_code` / `search_code_in_script` | 在所有 JS 中搜索关键词 / 在指定脚本中精确搜索 |
| `set_breakpoint_via_hook` | 通过 JS Hook 设置伪断点,捕获参数和返回值(支持持久化) |
| `trace_function` | 追踪函数调用,自动记录参数和返回值(支持持久化) |
| `hook_function` | 注入自定义 Hook(before/after/replace,支持 non_overridable 防覆盖) |
| `inject_hook_preset` | 一键预设 Hook(xhr/fetch/crypto/websocket/debugger_bypass,默认持久化) |
| `freeze_prototype` | 冻结原型方法防止页面 JS 覆盖 Hook |
| `hook_jsvmp_interpreter` | **一键插桩 JSVMP 解释器**(追踪 Function.prototype.apply + 30+ 敏感属性) |
| `get_jsvmp_log` / `dump_jsvmp_strings` | 获取 JSVMP 分析日志 / 提取字符串数组 |
| `compare_env` | 全面收集浏览器环境,用于补环境对照 |
| `trace_property_access` | Proxy 级别属性访问追踪 |
| `add_init_script` | 页面加载前注入脚本(支持 persistent 跨导航重注入) |
| `get_request_initiator` | 获取发起请求的 JS 调用栈(改进 URL 匹配 + 诊断信息) |
| `start_network_capture` | 启动网络捕获(支持 capture_body 捕获响应体) |
| `intercept_request` | 拦截/修改/Mock 网络请求 |
| `check_detection` / `get_fingerprint_info` | 反检测验证与指纹查看 |
| `bypass_debugger_trap` | 一键绕过反调试陷阱 |
| `export_state` / `import_state` | 保存/恢复浏览器状态 |
| `find_dispatch_loops` | **[v2.5.0 新]** 扫描脚本定位字节码分发函数(while+switch,case 数过滤) |
| `instrument_jsvmp_source` | **[v2.5.0 新]** 源码级插桩:在 HTTP 层改写 VMP,对每个 obj[key]/fn(args) 插入 tap(通用 VMP 利器) |
| `get_instrumentation_log` / `get_instrumentation_status` / `stop_instrumentation` | **[v2.5.0 新]** 源码插桩日志(hot_keys/hot_methods/hot_functions)/ 状态 / 停止 |
| `reload_with_hooks` | **[v2.5.0 新]** 重载让 persistent hook 先于页面 JS 执行(+ 清日志) |
| `analyze_cookie_sources` | **[v2.5.0 新]** Cookie 归因:HTTP Set-Cookie vs JS document.cookie 融合分析 |
| `get_runtime_probe_log` | **[v2.5.0 新]** 获取 runtime_probe 预设的广谱事件日志(xhr/fetch/canvas/WebGL/nav) |
| `navigate(pre_inject_hooks=[...], via_blank=True)` | **[v2.5.0 增强]** 首屏挑战页预注入 hook + 返回 initial_status/final_status/redirect_chain |
| `inject_hook_preset("cookie" | "runtime_probe")` | **[v2.5.0 增强]** 新增两个预设 |
详见 `references/mcp-cookbook.md`。
## 逆向场景覆盖
| 场景 | 技术点 | 参考文档 |
|------|--------|---------|
| 请求参数签名 | MD5/HMAC/自定义哈希 | `crypto-patterns.md` |
| 动态 Cookie | eval首包/api预热/指纹Cookie | `hook-techniques.md` |
| 响应数据加密 | AES/DES/RC4解密 | `crypto-patterns.md` |
| OB混淆 | 字符串还原/CFF/变量重命名 | `obfuscation-guide.md` |
| **JSVMP 虚拟机保护** | **Hook/插桩/日志分析三板斧** | **`jsvmp-analysis.md`** |
| 自定义VM | I/O追踪/Hook解释器 | `obfuscation-guide.md` |
| WASM加密 | 加载/环境补全/导出函数调用 | `environment-patch.md` |
| TLS指纹 | Camoufox 反检测/curl-impersonate/curl_cffi | `protocol-analysis.md` |
| HTTP/2 | Node.js http2模块/Python httpx | `protocol-analysis.md` |
| 字体反爬 | 字体文件解析/CMAP映射 | SKILL.md |
| WebSocket | WS消息分析/协议解析 | `mcp-cookbook.md` |
| 反调试 | debugger绕过/检测对抗 | `anti-debug.md` |
| 环境检测 | webdriver/蜜罐/指纹 | `environment-patch.md` |
| 反检测站点 | Cloudflare/RS/JY绕过 | SKILL.md |
| **请求失败排查** | **Cookie/Header/时间戳/签名对比** | **`troubleshooting.md`** |
| **通用 JSVMP 源码级插桩** | **HTTP 层源码改写 + hot_keys 指纹学习法(v2.5.0 新增)** | **`jsvmp-source-instrumentation.md`** |
| **Cookie 归因分析** | **HTTP Set-Cookie vs JS document.cookie 融合分析** | **`mcp-cookbook.md` 场景 7** |
## 技术栈
### Node.js
- **crypto** (内置): MD5/SHA/AES/DES/HMAC
- **crypto-js**: CryptoJS 兼容实现
- **node-forge**: RSA/PKI
- **axios**: HTTP 请求
- **vm** (内置): 沙箱执行
- **WebAssembly** (内置): WASM 加载
- **http2** (内置): HTTP/2 请求
- **playwright-core**: 浏览器自动化
### Python
- **requests** / **httpx**: HTTP 请求(httpx 支持 HTTP/2)
- **pycryptodome**: AES/DES/RSA/3DES 加密
- **hashlib** (内置): MD5/SHA 系列
- **hmac** (内置): HMAC 签名
- **base64** (内置): Base64 编解码
- **execjs**: 执行 JS 代码
- **curl_cffi**: 带浏览器 TLS 指纹模拟的 HTTP 客户端
### 调试工具
- **[camoufox-reverse MCP](https://github.com/WhiteNightShadow/camoufox-reverse-mcp) v0.4.0+**: 反检测浏览器逆向分析(65 个工具,含 JSVMP 源码级插桩 + Cookie 归因分析)