4.0 KiB
4.0 KiB
算法家族与站点模式
一、标准签名题
统一结构
request params
-> normalize / stringify / sort
-> inject token / timestamp / cookie / ua
-> hash / encrypt
-> final sign
高频站点模式
财联社
- 典型链:
query string -> SHA1 -> MD5 - 真正难点:参数排序、URL 编码、query string 一致性
百度翻译
token来自页面sign来自前端函数- 典型价值:页面态参数与 JS 纯算参数分离
有道翻译
- 请求签名:
client + mysticTime + product + key -> MD5 - 响应侧还存在固定 seed 派生的
AES-CBC解密 - 典型价值:同题同时训练请求签名和响应解包
淘宝 H5
- 典型链:
token&t&appKey&data -> MD5 - 真正难点:token 提取、
t一致性、紧凑 JSON
二、混合加密题
统一结构
明文
-> 对称加密
-> 对称加密或再次包装
-> 编码
-> params
随机 key
-> reverse / transform
-> RSA / SM2
-> encSecKey / signature
网易云音乐
- 双层 AES-CBC + RSA
- 重点不是入口,而是“业务数据”和“密钥包装”分层
三、Cookie / Header / 多参数联动题
Cookie 题
统一结构:
环境采集
-> builder
-> hash / encrypt / encode
-> document.cookie 写入
最稳入口:
- Hook
document.cookie - 回栈看 builder
- 继续追环境采集层
盼之 cookie
- 典型价值:从 cookie sink 反推 IIFE 和 builder
多参数联动题
滴滴 dd03 / dd05 / wsgsig
dd03更偏纯算层dd05更偏运行时或 webpack/VMP 层wsgsig更像收口层- 最稳打法:先拆组成件,再拆最终收口件
某农网 X-CLIENT-SIGN
- 先盯最终缺的 header
- 再把真正返回它的混淆函数整段收缩
四、JSVMP / VMP 题
共同策略
- 不从文件头正推。
- 先找最终 writer 和最终返回值。
- 先恢复中间数组 / 中间对象 / payload。
- 再恢复最终编码层。
小红书 X-s / X-t / X-S-Common
- 第一入口是
window._webmsxyw(),不是最终 header 串。 - 必须把
X-s和X-S-Common分开看。 X-S-Common体现的是 header 家族和环境/指纹字段联动。- 高频中间结构:
x1 / x2 / x3 / x4 / payload。 - 同站点多文章要分“入口定位”“AST 解混”“JSVMP 结构”“环境位串”“算法骨架”五种思路记录。
抖音 a_bogus
- 不要把它简化成
SM3 + RC4 + Base64。 - 真正难点是多段数组、状态推进、时间戳/随机数/UA/环境材料如何进入 96/128/136 位数组。
- 最该保存的检查点:双 SM3 输出、41 位浏览器数组、50 位主数组、96/128/136 位数组、最终
a_bogus。
QQ 音 / Spiderdemo / 复杂 VMP
- 更适合当“标准题”和“超重型对抗题”之间的过渡训练。
- 优先练 webpack 入口定位、最终 writer 确认、协议/页面回填拆分。
五、Wasm / 协议题
Wasm
优先顺序:
- 找加载点
- 找 Wasm URL
- 看
instance.exports - 用固定输入验证输出
- 再决定是否反编译
Protobuf / WebSocket
- 先数包或先确认 message type
- 先拆协议线和页面线
- 不要一开始就把二进制题当“某个 sign 函数”
Spiderdemo T6
- 重点不是 sign,而是 protobuf + 页面占位回填
六、国密题
SM3
- 经常作为最终签名层或中间摘要层出现
- 真正要对齐的是:原始明文、SM3 输入字节、SM3 输出、后续 builder 输入
SM4
- 分析重点和 AES 类似:key、iv、模式、padding、编码层
SM2
- 更适合作为“识别型知识”
- 先确认它是不是关键层,再决定是否优先迁移
七、最小落地接口
优先收敛成这类分层:
build_context
-> build_raw_string / build_payload
-> crypto_or_vm_layer
-> validate_checkpoints
-> final_output
不要把所有逻辑塞进一个大函数里。