data参数
1由于电脑尝试错误请求比较多,写文章的时候dw服务器已经把我封了,我这里用charles抓手机端h5的,请求参数就data一个需要破解,响应待会再说
2找加密data加密位置用hook params查询参数,hook就不多说了
(function () {
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url, async) {
if (url.indexOf("data") != -1) {
debugger;
}
return open.apply(this, arguments)
}
})();
3随便点一个物品会断住
4往上跟栈,这个栈往上走后再也没有出现data, 所以data是从上一个函数传下来的,这里需要插桩调试,因为会有许多请求都会经过这里,插桩可以快速定位到关键位置,它只会走一次,v是__zone_symbol__value
e[v].params.data!=undefined
5这张图是hook断住的
6这张图是插桩断住的,断住后直接往上走
7找到这个位置,这里m已经被下面的赋值污染了,需要先取消之前断点再打到v赋值的地方,如下图
8再次点一个物品它会断住,可以看到名称和翻页,还有一个md5签的sign,这种属于把其他参数拼接后签名与传过来的sign做比对来验证,因为摘要算法一般不可逆,所以它的作用就是来验证你传的参数是否和签名后的sign一致,b站和淘宝用的就是这种
9从b.Fun110进去后是另一个js文件,好几千行,我前前后后分别尝试了补环境,扣算法,接着又是补环境,扣算法,补环境,最后扣算法,因为里面环境有点多,即使补到长度一样也不可行,所以最终打算扣算法,补环境还没成功,不过你补环境的话得提前把密钥确定下来,不然服务器返回给你的密文你是解不了秘的,AES对称加密,你不扣算法你也不会知道密钥在哪生成的,因为它是随机生成的. 这是点进去后的文件.
10return的结果在value那个模块里,补环境导出这个模块在手动传参就行了
11详细扣的话要写很多内容,所以想实现就靠你们自己了,扣完也就20多行
12注意事项:
里面混淆不是很严重,所以我没有还原,硬刚的
补环境需要先找到密钥生成位置,否则即使成功了也解不了密
13最后贴一张结果图吧,证明我来过