7.0 KiB
第二轮补环境阅读笔记
这份文档记录本轮继续扩读后,新补进来的信息点。
这一轮的目标不是重复收集 Proxy 入门文,而是专门补当前草稿缺的方向:
window/ 原型链关系window.crypto/performanceWebRTCAudioContext/OfflineAudioContextWorker- 更复杂的国外风控 / 验证码环境检测
1. 本轮阅读后最明显的变化
如果把这批文章和前面的 GitHub 框架一起看,会发现一个很重要的分层:
第一层:基础补环境
window = globalThisdocument = {}navigator = {}location = {}history = {}screen = {}Proxy吐环境
这类内容很多,足够入门,但对 future skill 的增量已经有限。
第二层:工程化补环境
- 原型链
Symbol.toStringTag- native
toString - getter / setter / 描述符
plugins/mimeTypesdocument.all
这类内容是现有 codex 草稿的核心骨架。
第三层:高强度检测
window.crypto.getRandomValuesperformance.timingRTCPeerConnectionRTCRtpSender/RTCRtpReceiverOfflineAudioContextWorker/SharedWorker- 字体指纹
Math精度差异- wasm + Promise 异步链
这一层才是后续最值得重点扩读和沉淀的方向。
2. 本轮最有价值的文章与新增信息
2.1 博客园:JS逆向之浏览器补环境详解
链接: 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
这篇文章虽然代码不复杂,但有一个很实用的点:
- 它把
performance、top、self、document一起纳入了 Proxy 监控清单
它提醒我们:
performance不应该只放在指纹模块里,也应该纳入 Proxy 观察默认目标top/self这类window关系也应该是默认监控项
2.3 博客园:window.crypto.getRandomValues 模拟
链接: 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
这篇文章虽然主题更偏验证码,但里面有两个对补环境很重要的点:
window.crypto.getRandomValueswindow.performance.timing
尤其是 performance.timing,说明我们前面的遗漏判断是对的:
- performance 不能只补
performance.now - 很多场景会直接读 timing 结构
所以 future skill 至少应单独补:
performance.nowperformance.timeOriginperformance.timing- 时间序列一致性
2.5 博客园:修改浏览器指纹之 webrtc 指纹修改
链接: https://www.cnblogs.com/68xi/p/13344520.html
这篇文章不是逆向框架文,但对 WebRTC 的价值很高:
- 明确给出了
RTCPeerConnection探测本机 IP 的典型流程 - 涉及
createDataChannel - 涉及
createOffer - 涉及
onicecandidate
这说明 future skill 中的 webrtc-module 至少要考虑:
- 构造函数存在性
createDataChannelcreateOffer- ICE candidate 行为
- IP 泄漏与候选收集路径
2.6 CN-SEC:hCaptcha 无感逆向分析-补环境
链接: https://cn-sec.com/archives/4909845.html
这是这一轮最关键的文章。
它几乎直接把我们草稿里“高强度检测层”的缺口点出来了:
RTCPeerConnectionRTCRtpSenderRTCRtpReceiverOfflineAudioContextWebGL2RenderingContext- 描述符检测
AudioBuffer.prototype.getChannelDataMath精度差异- 字体指纹
- canvas 指纹
WorkerSharedWorker- Promise / wasm 异步调用链
这篇文章对 future skill 的最大推动有三点:
- 说明补环境已经不能只看 BOM / DOM
- 说明“异步链 + wasm 交互 + 指纹一致性”是高阶核心
- 说明验证模块必须能和浏览器日志对照
3. 本轮阅读后,future skill 应新增的模块
结合这一轮资料,最应该补进 blueprint 的新增模块有:
3.1 crypto-module
至少包含:
window.cryptowindow.msCryptogetRandomValuessubtle
3.2 performance-module
至少包含:
performance.nowperformance.timeOriginperformance.timing- 时间一致性
3.3 webrtc-module
至少包含:
RTCPeerConnectionRTCRtpSenderRTCRtpReceiver- ICE candidate 行为
3.4 audio-fingerprint-module
至少包含:
AudioContextOfflineAudioContextAudioBuffergetChannelData
3.5 worker-module
至少包含:
WorkerSharedWorkerpostMessageMessageEvent
3.6 math-precision-module
至少包含:
- 精度差异检查
- 高风险数学函数差异记录
- 浏览器 / Node 结果对照能力
4. 对当前 codex 草稿最直接的修正建议
这一轮阅读后,我认为前面的遗漏优先级需要进一步收敛成:
crypto-moduleperformance-modulewebrtc-moduleaudio-fingerprint-moduleworker-modulewindow关系一致性- 完整 Event / DOM 系统
原因很简单:
- 这些模块在高强度风控里更容易真正卡死流程
- 而且它们比基础 BOM/DOM 更难靠“临时补值”解决
5. 当前最稳的结论
这第二轮阅读已经说明:
- 我们现在不是资料不够多
- 而是资料分布不均
真正该继续扩读的,不是更多重复的 Proxy 入门文,而是:
cryptoperformanceWebRTCAudioContextWorkerMath精度- wasm 交互与异步调用链
这会直接决定 future skill 后续有没有能力从“常规补环境”走向“国外高强度盾补环境”。