Files
hello_js_reverse_skill/cases/_template.md
T
白夜 38b982fb1e feat: skill v3.2.0 — 硬约束Checklist五项压缩到三项,移除MCP session依赖,cases/成为唯一经验库
- SKILL.md 瘦身重写(核心层+按需加载references/)
- Checklist: CHECK-3/4(session)删除,五项→三项
- 新增6个references子文档(path-a/path-b/phase-details/experience-rules-full/mcp-tool-reference/common-pitfalls)
- 删除 references/domain-session-guide.md
- 工具引用对齐实际MCP(32工具),verify_signer_offline替代verify_against_session
- cases/_template.md 新增可验证事实清单段
- 经验法则session相关条目改写
- 红线四条、第一原则0-5、三分法、四板斧、六步法完整保留
2026-04-18 13:36:14 +08:00

167 lines
3.9 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.
# [案例名称:用技术特征命名,如 OB混淆+AES-CBC+动态密钥]
> 难度:★☆☆☆☆ ~ ★★★★★
> 还原方案:[A: 纯算法还原 / B: 沙箱执行 / C: WASM 加载 / D: 浏览器自动化 / E: jsdom 环境模拟]
> 实现语言:[Node.js / Python / 双语言]
> 最后验证日期:YYYY-MM-DD
> 平台类型:[如:短视频平台 / 电商平台 / 社交平台 / 通用]
---
## 技术指纹(供 Phase 0.5 自动匹配)
### JS 特征
- [ ] 特征1:描述 + 可搜索的关键词/正则
- [ ] 特征2:...
### 参数特征
- [ ] 参数名: [名称] | 长度: [N] | 字符集: [hex/base64/自定义] | 编码: [描述]
- [ ] ...
### 请求特征
- [ ] 特征1:如预热接口、XHR 拦截、多层 SDK 加载顺序
- [ ] ...
### 反调试特征
- [ ] 特征1:如 debugger 陷阱、Function.toString 检测
- [ ] ...
### 混淆类型
- [ ] 类型:OB混淆 / JSVMP / 控制流平坦化 / eval打包 / 其他
### 指纹检测规则(Agent 执行)
```
快速检测命令(30秒内完成):
- search_code(keyword="关键词1") → 命中条件
- search_code(keyword="关键词2") → 命中条件
- list_scripts → 文件体积条件
匹配判定:以上 N 项中命中 M 项以上 → 高置信度匹配
```
---
## 反爬类型判定(v2.7.0 新增)
> 在进入加密方案分析之前,必须先判定反爬类型。参考 SKILL.md「反爬类型识别与工具选择」章节。
```
判定步骤:
1. navigate(url) 不加任何 hook → 观察 redirect_chain
2. 按三分法判断:签名型 / 行为型 / 纯混淆
3. 记录判定结果和依据
判定结果:[签名型 / 行为型 / 纯混淆]
判定依据:[如 "redirect_chain 直接 200,页面后续 XHR 带 X-Bogus 签名参数 → 行为型"]
工具路径:[如 "四板斧全开" / "仅源码级插桩" / "任意组合"]
```
---
## 加密方案
- **算法**:[具体算法名称和模式]
- **密钥来源**:[硬编码 / 接口下发 / 动态计算 / 环境指纹]
- **加密流程**:
1. [步骤1]
2. [步骤2]
3. ...
- **签名公式**:`sign = 算法(参数1 + 参数2 + ... + 密钥)`(如可提取)
---
## 已验证定位路径(Phase 0.5 命中后直接执行)
```
步骤 1: [具体 MCP 操作和关键词]
步骤 2: [...]
步骤 3: [...]
...
```
---
## 还原代码模板
### 核心函数
```javascript
// Node.js 还原代码
```
```python
# Python 还原代码(如适用)
```
### 环境补丁(如需要)
```javascript
// 环境模拟代码
```
---
## 踩坑记录
| # | 坑 | 现象 | 解决方法 |
|---|---|------|---------|
| 1 | | | |
| 2 | | | |
---
## 变体说明
| 变体 | 差异点 | 影响 |
|------|--------|------|
| A | | |
| B | | |
---
## 浏览器指纹采集方法(如涉及环境伪装)
> 仅当还原方案涉及环境模拟(jsdom / vm 沙箱)时需要此段
```javascript
// 使用 camoufox-reverse MCP 在真实浏览器中采集指纹的代码
```
---
## 环境检测差异表(如涉及环境伪装)
> 仅当还原方案涉及环境模拟时需要此段
| 检测点 | 真实浏览器值 | 模拟环境原始值 | 修复方式 |
|--------|-------------|---------------|---------|
| | | | |
---
## 关键经验总结(v2.7.0 新增)
> 本次逆向分析中最有价值的经验,供后续类似场景参考
### 1. [经验标题]
[经验描述]
### 2. [经验标题]
[经验描述]
---
## 可验证事实清单(v3.2.0 新增)
> 下次同站分析(尤其升级后)用这些事实做 checklist:逐条手动 verify,
> 全部通过 → 站点未变,直接用本 case 的协议代码;
> 部分通过 → 变化的事实就是今天的工作范围;
> 全部不通过 → 站点大改,但通过的事实仍是 invariants。
- [ ] `___事实1___`(如:X-Bogus 长度固定 28)
- [ ] `___事实2___`(如:navigator.webdriver === false 触发信号)
- [ ] `___事实3___`(如:签名入口 u[995] offset 50811)
- [ ] `___事实4___`
- [ ] `___事实5___`