# [案例名称:用技术特征命名,如 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___`