百趣云 百趣云的博客

🔖JS逆向

博主
百趣云
23小时前 · NEW!
sign 参数:看着像 md5,确实是 md5(的变种)QQ 音乐 web 端 u.y.qq.com 的 CGI 接口带一个 sign 参数,32 位 hex。和别家把签名算法藏在 VMP 里不同,QQ 音乐的签名就是魔改 md5 + 字符置换,混淆程度中等,是练"从 webpack chunk 里抠函数"的好目标。定位:搜对关键词事半功倍QQ 音乐前端是 webpack 打包,直接搜 sign 会被淹没。正确的搜索词是功能命名:"securitySign" ← 直接命中签名函数 "getSign" ← 部分版本命中后能看到签名函数
博主
百趣云
1天前 · NEW!
mtgsig:把签名元信息摆在明面上的设计美团 H5 接口的请求头里有一个 mtgsig,值是一串编码后的 json。解码后字段含义几乎写在脸上:字段编号是语义化的:a5、a6 告诉你签名覆盖了方法和路径,a7、a8 告诉你 query 和 body 都参与了摘要。这种"元信息透明"的设计让服务端校验策略可以灵活升级,也给逆向者画了张地图。定位:签名是异步的美团 H5 的签名 SDK 是独立加载的 mtgsig 相关 chunk。定位时注意一个特点:签名函数返回 Promise——因为它要先异步采集设备指纹(a4 字段的 dfp 值),再算签名。所以 hook 点要选在异步完成之后:const
博主
百趣云
1天前 · NEW!
h5st 的特殊之处:算法是动态下发的京东 H5 接口的签名参数 h5st 有一个和其他家都不同的设计:签名算法本身不是静态写死在 JS 里的,而是 SDK 启动时从服务器拉取的。这就是为什么你在 h5st.js 里翻来覆去找不到完整的签名逻辑——核心部分是个"算法函数",运行时从 https://cactus.jd.com/request_algo?g_ty=ajax 拉下来 eval 执行。理解这一点,逆向思路就清晰了:不是去逆一个静态算法,而是搞清楚"拉算法 → 组装输入 → 执行算法"这三段流程。h5st 参数结构先看参数长什么样(以 4.x 版本为例,分号分段):h5st = 日期时
博主
百趣云
1天前 · NEW!
wbi 的设计哲学:密钥动态化B站 2023 年起大面积启用 wbi 签名,取代旧的 appkey+appsign 体系。它的设计思路和别家相反:算法完全公开(就是 md5),但密钥不在客户端写死,而是藏在接口返回的图片 URL 里,定期轮换。防护思路从"算法保密"转向"密钥时效",对逆向者反而友好了。完整流程拆解第一步:拿密钥原料。请求 https://api.bilibili.com/x/web-interface/nav(无需登录),返回:{ "data": { "wbi_img": 取两个 URL 的文件名去扩展名:img_key =
博主
百趣云
1天前 · NEW!
先认清对手:a_bogus 是 VMP 保护的抖音 web 端的签名参数从 _signature 到 X-Bogus 再到现在的 a_bogus,防护强度一路升级。当前版本的生成代码在 webmssdk.js 里,整个文件跑在字节自研的 JS 虚拟机上——你看到的不是 JS 代码,而是一堆字节码和一个巨大的 switch-case 解释器。这意味着"读源码理解算法"这条路基本被堵死:不是不能,是投入产出比极低。工程上成熟的打法是整段抠出 + 补环境,让这段 VMP 代码在 Node 里原样跑起来,我们只管调它的导出函数。第一步:确认签名入口webmssdk 加载后会在 window 上挂出入口