作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

1、参数分析小笔记

din : 返回一个23长度的数组,主要关注以下4个参数
    hz1:通过时间戳计算得到
    ran:字符类型随机数
    ucs: 根据ua计算得到
    hal: 时间戳 / 2 
注意:din返回的数组顺序是动态的,与js文件绑定,可以先定死顺序
 

ajr:
    startTimestamp: 时间戳
    deviceData: 通过din计算得到
    mouseMoveData: 前2次请求为空字符串,只有第三次请求出现鼠标轨迹
    totVel:前2次请求为0,第三次请求有值
    deltaTimestamp:时间差,对应mst的delt、ssts、vmp传入的第一个参数,在第三次请求中是鼠标轨迹最后一组的时间

2、din参数分析

定位到din生成位置,控制台输出可以看得出来基本上都是些浏览器环境,跟进c0U函数。

从后往前看,直接定位到lYU,在这个位置断点。
对比前面c0U()返回的对象,可以发现vYU对象就是排序前的数组,所以Nv很明显就是数组重新排序的函数。

就稍微看下我前面提到的参数就可以,直接往上找。

3、动态数组(一个简单的vmp)

数组顺序的逻辑:
        1、js文件中会绑定一个长度1000-2000之间的字符串,根据这个字符串生成一个大数组
        2、从这个大数组里面拿值,得到5个长度23的数组和一个长度为5的数组。
        3、前面F5函数中传入的参数2就是长度为5的数组中的一个,根据这个索引获取对应的23数组。
        4、难点就是这个参数2,这个数组顺序可以短时间固定。如果需要动态化就循环5次肯定有一个对的,找到对的索引,锁定这个索引可以跑几分钟。

跟进Nv函数,单步跟一下很容易就找到入口ww[Dj](),继续跟进。

进到这个while中,稍微调试下就可以发现这个循环就是不断从这个959数组里面取值然后push。

数值都是在this[R2]函数在获取的,跟进去在里面打个日志断点,保存日志到本地进行分析。

日志断点:'索引:',JSON.stringify(this[54][152]), '值:',JSON.stringify(this[65][this[54][152]]), '目标数组:',JSON.stringify(this[163])


数组生成规律一目了然,本地直接还原,根据这个大数组就可以得到5个23位的数组。

function get_array_list(b_array){
    let start_index = 38
    let result_data = []
    let array_list = []
    for (start_index; result_data.length < 5; start_index+=4){
        array_list.push(b_array[start_index])
        if (array_list.length === 23){
            result_data.push(array_list.reverse())
            start_index += 4
            array_list = []
        }
    }
    return result_data.reverse()
}

后续的5位数组:根据日志的索引位置打条件断点,有两种生成逻辑,调试下就出来了。

大数组的生成:调用数组排序函数之前就生成了,就在函数的作用域链里面,直接全局搜索Nv函数。

跟进w函数中,this[Ds]就是字符串生成数组的位置了,直接还原算法就ok了,这个字符串是和js文件绑定的,后续会和动态ver、动态常量一起出一篇简单分析。

function get_new_ZPT(J) {
    var W4 = atob(J);
    var G4 = 0;
    var HO = [];
    var nK = 0;
    for (var rl = 0; rl<W4.length; rl++) {
        HO[nK] = W4.charCodeAt(rl);
        G4 = G4 ^ HO[nK++];
    }
    return HO;
}

4、ajr参数分析

需要关注的是最终结果和deviceData的计算逻辑,在这两个函数里面打下断点,单步调试下。

deviceData就是把din的键值拿出来用逗号拼接下

跟进LSU函数中,代码还原下就直接出来了,这里的计算逻辑有的网站会变,但是频率不高,可以直接固定算法。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐