Files
reverse-skills-max/vendor-new/xbsReverseSkill/web-reverse-env/references/reading-round2.md

272 lines
7.0 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.

# 第二轮补环境阅读笔记
这份文档记录本轮继续扩读后,新补进来的信息点。
这一轮的目标不是重复收集 Proxy 入门文,而是专门补当前草稿缺的方向:
- `window` / 原型链关系
- `window.crypto` / `performance`
- `WebRTC`
- `AudioContext` / `OfflineAudioContext`
- `Worker`
- 更复杂的国外风控 / 验证码环境检测
## 1. 本轮阅读后最明显的变化
如果把这批文章和前面的 GitHub 框架一起看,会发现一个很重要的分层:
### 第一层:基础补环境
- `window = globalThis`
- `document = {}`
- `navigator = {}`
- `location = {}`
- `history = {}`
- `screen = {}`
- `Proxy` 吐环境
这类内容很多,足够入门,但对 future skill 的增量已经有限。
### 第二层:工程化补环境
- 原型链
- `Symbol.toStringTag`
- native `toString`
- getter / setter / 描述符
- `plugins/mimeTypes`
- `document.all`
这类内容是现有 `codex` 草稿的核心骨架。
### 第三层:高强度检测
- `window.crypto.getRandomValues`
- `performance.timing`
- `RTCPeerConnection`
- `RTCRtpSender` / `RTCRtpReceiver`
- `OfflineAudioContext`
- `Worker` / `SharedWorker`
- 字体指纹
- `Math` 精度差异
- wasm + Promise 异步链
这一层才是后续最值得重点扩读和沉淀的方向。
## 2. 本轮最有价值的文章与新增信息
### 2.1 博客园:JS逆向之浏览器补环境详解
链接:
[https://www.cnblogs.com/spiderman6/p/16969391.html](https://www.cnblogs.com/spiderman6/p/16969391.html)
这篇文章的最大价值不是某个单独代码片段,而是把补环境明确拆成两条路线:
- 递归 Proxy 监控路线
- 纯 JS 原型链框架路线
对 future skill 最有价值的新增点:
- 明确提出“工程化项目结构”比单脚本更重要
- 明确提到事件处理是框架必须考虑的点
- 强调每个 BOM / DOM 对象应单文件组织
- 强调补环境框架要按原型链顺序拼接
这对我们前面已经写出的 `future-skill-blueprint` 是很强的佐证。
### 2.2 博客园:js补环境代码
链接:
[https://www.cnblogs.com/c-x-a/p/18702240](https://www.cnblogs.com/c-x-a/p/18702240)
这篇文章虽然代码不复杂,但有一个很实用的点:
- 它把 `performance`、`top`、`self`、`document` 一起纳入了 Proxy 监控清单
它提醒我们:
- `performance` 不应该只放在指纹模块里,也应该纳入 Proxy 观察默认目标
- `top/self` 这类 `window` 关系也应该是默认监控项
### 2.3 博客园:window.crypto.getRandomValues 模拟
链接:
[https://www.cnblogs.com/hotdog418/articles/14005518.html](https://www.cnblogs.com/hotdog418/articles/14005518.html)
这篇文章的价值在于给了一个很具体的 `getRandomValues` 模拟思路,并且点到了真实行为细节:
- 需要处理 `Uint8Array`
- 需要处理 `Uint16Array`
- 需要处理 `Uint32Array`
- 需要处理长度超过阈值时的异常
这对 future skill 的意义是:
- `crypto.getRandomValues` 不能只返回随机数
- 还要尽量模拟参数类型和错误行为
也就是说,`crypto-module` 已经值得单独立项。
### 2.4 验证码细节总结:补环境中可能用到的方法
链接:
[https://www.cnblogs.com/ocr12/p/18664716](https://www.cnblogs.com/ocr12/p/18664716)
这篇文章虽然主题更偏验证码,但里面有两个对补环境很重要的点:
- `window.crypto.getRandomValues`
- `window.performance.timing`
尤其是 `performance.timing`,说明我们前面的遗漏判断是对的:
- performance 不能只补 `performance.now`
- 很多场景会直接读 timing 结构
所以 future skill 至少应单独补:
- `performance.now`
- `performance.timeOrigin`
- `performance.timing`
- 时间序列一致性
### 2.5 博客园:修改浏览器指纹之 webrtc 指纹修改
链接:
[https://www.cnblogs.com/68xi/p/13344520.html](https://www.cnblogs.com/68xi/p/13344520.html)
这篇文章不是逆向框架文,但对 `WebRTC` 的价值很高:
- 明确给出了 `RTCPeerConnection` 探测本机 IP 的典型流程
- 涉及 `createDataChannel`
- 涉及 `createOffer`
- 涉及 `onicecandidate`
这说明 future skill 中的 `webrtc-module` 至少要考虑:
- 构造函数存在性
- `createDataChannel`
- `createOffer`
- ICE candidate 行为
- IP 泄漏与候选收集路径
### 2.6 CN-SEC:hCaptcha 无感逆向分析-补环境
链接:
[https://cn-sec.com/archives/4909845.html](https://cn-sec.com/archives/4909845.html)
这是这一轮最关键的文章。
它几乎直接把我们草稿里“高强度检测层”的缺口点出来了:
- `RTCPeerConnection`
- `RTCRtpSender`
- `RTCRtpReceiver`
- `OfflineAudioContext`
- `WebGL2RenderingContext`
- 描述符检测
- `AudioBuffer.prototype.getChannelData`
- `Math` 精度差异
- 字体指纹
- canvas 指纹
- `Worker`
- `SharedWorker`
- Promise / wasm 异步调用链
这篇文章对 future skill 的最大推动有三点:
1. 说明补环境已经不能只看 BOM / DOM
2. 说明“异步链 + wasm 交互 + 指纹一致性”是高阶核心
3. 说明验证模块必须能和浏览器日志对照
## 3. 本轮阅读后,future skill 应新增的模块
结合这一轮资料,最应该补进 blueprint 的新增模块有:
### 3.1 `crypto-module`
至少包含:
- `window.crypto`
- `window.msCrypto`
- `getRandomValues`
- `subtle`
### 3.2 `performance-module`
至少包含:
- `performance.now`
- `performance.timeOrigin`
- `performance.timing`
- 时间一致性
### 3.3 `webrtc-module`
至少包含:
- `RTCPeerConnection`
- `RTCRtpSender`
- `RTCRtpReceiver`
- ICE candidate 行为
### 3.4 `audio-fingerprint-module`
至少包含:
- `AudioContext`
- `OfflineAudioContext`
- `AudioBuffer`
- `getChannelData`
### 3.5 `worker-module`
至少包含:
- `Worker`
- `SharedWorker`
- `postMessage`
- `MessageEvent`
### 3.6 `math-precision-module`
至少包含:
- 精度差异检查
- 高风险数学函数差异记录
- 浏览器 / Node 结果对照能力
## 4. 对当前 codex 草稿最直接的修正建议
这一轮阅读后,我认为前面的遗漏优先级需要进一步收敛成:
1. `crypto-module`
2. `performance-module`
3. `webrtc-module`
4. `audio-fingerprint-module`
5. `worker-module`
6. `window` 关系一致性
7. 完整 Event / DOM 系统
原因很简单:
- 这些模块在高强度风控里更容易真正卡死流程
- 而且它们比基础 BOM/DOM 更难靠“临时补值”解决
## 5. 当前最稳的结论
这第二轮阅读已经说明:
- 我们现在不是资料不够多
- 而是资料分布不均
真正该继续扩读的,不是更多重复的 Proxy 入门文,而是:
- `crypto`
- `performance`
- `WebRTC`
- `AudioContext`
- `Worker`
- `Math` 精度
- wasm 交互与异步调用链
这会直接决定 future skill 后续有没有能力从“常规补环境”走向“国外高强度盾补环境”。