Files
hello_js_reverse_skill/README.md
T

273 lines
14 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:hello_js_reverse_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 # 工作流总览与解法模式决策树
│ ├── phase-details.md # Phase 0-5 详细操作(v3.3.0 起以 SKILL.md 为准)
│ ├── mcp-cookbook.md # MCP 工具场景手册(v3.3.0 起以 SKILL.md 为准)
│ ├── mcp-tool-reference.md # MCP 工具名迁移映射
│ ├── experience-rules-full.md # 经验法则完整版(v3.3.0 起以 SKILL.md 为准)
│ ├── path-a-four-tools.md # 路径 A 四板斧详细步骤
│ ├── path-b-env-emulation.md # 路径 B 环境伪装六步法
│ ├── jsvmp-analysis.md # JSVMP 字节码分析
│ ├── jsvmp-source-instrumentation.md # 源码级插桩专项
│ ├── jsdom-env-patches.md # jsdom 环境补丁模板
│ ├── common-pitfalls.md # 反模式清单
│ ├── crypto-patterns.md # 加密算法识别与还原代码
│ ├── obfuscation-guide.md # JS 混淆类型识别与还原策略
│ ├── hook-techniques.md # Hook 技术大全
│ ├── anti-debug.md # 反调试对抗手册
│ ├── environment-patch.md # 环境补全指南
│ ├── protocol-analysis.md # 协议层分析
│ └── troubleshooting.md # 错误排查指南
│
├── cases/ # 经验案例库(唯一经验库)
│ ├── README.md # 高频站点速查表
│ ├── _template.md # 新案例模板
│ └── *.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 反检测浏览器,**32 个核心工具,v1.0.0 统一 API**):
- 源码级插桩 `instrumentation(action='install', 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(keyword, script_url=None)` | 在所有/指定 JS 中搜索关键词 |
| `scripts(action='list'\|'get'\|'save')` | 列出/获取/保存脚本 |
| `hook_function(mode='intercept'\|'trace')` | 自定义 Hook / 函数追踪(支持 non_overridable 防覆盖) |
| `inject_hook_preset` | 一键预设 Hook(xhr/fetch/crypto/websocket/debugger_bypass/cookie/runtime_probe) |
| `hook_jsvmp_interpreter` | 一键插桩 JSVMP 解释器(proxy / transparent 两种模式) |
| `instrumentation(action='install'\|'log'\|'stop'\|'reload')` | 源码级插桩:HTTP 层改写 VMP + 日志 + 重载 |
| `network_capture(action='start'\|'stop')` | 网络捕获(支持 capture_body) |
| `list_network_requests` / `get_network_request` | 列出/获取捕获的请求 |
| `get_request_initiator` | 获取发起请求的 JS 调用栈(黄金路径) |
| `intercept_request` | 拦截/修改/Mock 网络请求 |
| `cookies(action='get'\|'set'\|'delete')` | Cookie 管理 |
| `compare_env` | 全面收集浏览器环境,用于补环境对照 |
| `verify_signer_offline` | 用真实样本离线验证签名代码 |
| `evaluate_js` | 在页面执行任意 JS |
| `export_state` / `import_state` | 保存/恢复浏览器状态 |
| `check_environment` / `reset_browser_state` | 环境自检 / 清理残留状态 |
详见 SKILL.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 指纹学习法** | **`jsvmp-source-instrumentation.md`** |
| **Cookie 归因分析** | **HTTP Set-Cookie vs JS document.cookie 融合分析** | **SKILL.md 场景速查** |
## 技术栈
### 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) v1.0.0**: 反检测浏览器逆向分析(32 个核心工具,统一 API,含源码级插桩 + Cookie 归因分析)
## 版本记录
| 版本 | 日期 | 要点 |
|------|------|------|
| v3.3.1 | 2026-04-21 | 经验法则精简:移除单站点经验(env-patch 行数阈值 / UA 矩阵 / cacheOpts 三件套),合并 evaluate_js 相关为 1 条,总数从 24 压缩到 22 条 |
| v3.3.0 | 2026-04-19 | 核心层回归扩容:Phase 1-5 详细动作 + 10 个场景速查 + 经验法则回迁核心层;案例层强化(禁动清单 + UA 分支矩阵) |
| v3.2.1 | 2026-04-19 | Phase 0.5.1 强化案例复用策略;经验法则第 11 条重写 |
| v3.2.0 | 2026-04-18 | 移除 MCP session 依赖,Checklist 压缩到三项,cases/ 成为唯一经验库 |
| v3.1.0 | 2026-04-18 | SKILL.md 瘦身,references/ 拆分子文档,工具引用对齐 MCP 合并 API |
| v3.0.0 | 2026-04-18 | 硬约束 Checklist + 红线四条 + 经验法则压缩 |