赞
踩
**本文主要提供思路和流程,不提供代码**
第一个debugger通过右键一律不在此暂停解决
第二个通过在控制台输入以下hook eval的代码便可解决
- var eval_ = window.eval;
- window.eval = function(x){
- eval_(x.replace("debugger;"," ; "));
- };
- window.eval.toString = eval_.toString;
1.将控制台的日志错误输出关闭,不然一直输出报错的日志
2.在解决完debugger后的环境下,在新代码段创建一段新的脚本,主要两部分,ts和对应的js,这里是说第一次生成的214位cookis,运行后可以看到document里面是有设置值的,这个值便是有用的214位cookies
3.至此便可以开始调试了。
根据日志可以看到8位数组是通过这个180的大数组生成的
180的数组生成: 由r2mKa那一串函数生成的对象中的60位数组取得第23位
在_$h6.length == 180的时候打上条件断点,通过一步步跟,可以发现8位数组是经过4个数组经过运算生成的,
ts['cd']生成的大数组经过运算生成数组array_155,array_1121
array_155经过$_ts['cp'][3]生成的16位数组进行更新
然后将array_155按照固定的算法拆分为4个数组和对应的index,并将r2mKa生成的60位数组按照index进行替换
到这4位数组就生成了通过_$mY这个函数就可以运行得出,
得到8位数组经过和array_1121经固定的运算可以得到35位数组
通过搜索 = 0 : 0, 找到这个位置打上断点
发现跟203位的对比,多了几个数组,分别是
前缀为1,长度为36的数组,应该是鼠标轨迹生成的,后面测试发现可以固定
前缀为0,长度为101的数组,应该是浏览器指纹生成,也可以固定
前缀为4,长度为13或14不固定,也可以固定
最后整合为一个304位的数组,再经过转化变成406长度的数组,转化步骤跟214的差不多
在open和send函数打上断点,也是在<= 63这个地方插桩
里面这些函数名称自己根据日志分析,跟生成cookie过程差不多
array_23生成的步骤可以在这里打上断点一步步跟
temp_time 的生成跟前缀为10的长度18的数组后面那部分规则是一样的
- params = _$nZ(array_72)
- array_72 = array_4 + array_68 //array_4 是有array_68经过一个函数生成
-
- array_68 = 之前生成的array35中取第二个 + array_32.length+ array_32
-
- array_32 = array_25和 35中取第17 生成的21位数组
- array_25 = 11+ array_23.length+ array_23
-
-
- array_23 = []
- _$aP(array_23,48);
- _$cm(array_23,1)
- _$dv(array_23,array_35_10); // 35中取第10 生成
- _$aP(array_23,array_35_19); // 35中取第19 生成
- _$$K(array_23,temp_time)
- url_params_num = _$fU(url_params.toUpperCase())
- _$aP(array_23,url_params_num)
- _$gq(array_23,0,49)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。