的:
至此这四个也分析完了,还差以下这部分:
em 等定值就不分析了,注意 kqg5:"1557244628"
,这个参数值和三代滑块中一样,每隔几个小时会改变,向上跟栈到 $_BCFj
中,在第 6207 行打下断点,此时 e 中这个值还未生成:
下一行打下断点,下步断点,即执行完 n[$_CBHIE(791)](e);
后,这个参数值就生成了,证明是 n[$_CBHIE(791)]
方法生成的,跟进去:
跳转到第 5766 行,在第 5779 行打下断点,此时的 n 中还未生成此参数:
执行了 _gct(n)
后即生成:
可见其生成位置在 _gct
方法中,跟进去后到 gct4.js 文件,和三代大差不差:
可以将值导出,至此 e 就分析完了,接着回到第 6238 行,跟进到加密函数 d[$_CBHHO(84)]
中,定义在第 11669 行,d[$_DIEHS(177)](c) + u
即 r 参数的值,c 为一个大数组,u 明显也经过加密了,所以 r 参数的值就是数组 c 加密后再加上 u 得到的:
先跟进到 u,其定义在第 11705 行,解混淆后如下:
u = new l["default"]()["encrypt"](i);
所以 u 是 i 经过加密后得到的,i 定义在第 11702 行:
i = (0,d[$_DIEIq(103)])()
跟进到 d[$_DIEIq(103)]
中,定义在第 852 行,又是熟悉的 16 位随机数:
i 是随机数,跟进到加密函数 l[($_DIEHS(84))]
中,在第 12725 行,于 12741 行打下断点,可以看到这里就是个 RSA 加密,扣代码或者直接引库即可:
回到 c 参数,c 参数的值为一个大数组,其定义在第 11705 行,解混淆后内容如下:
var c = s[a]["symmetrical"]["encrypt"](e, i);
e 之前分析完了,i 为随机数,两个参数已经分析完了,跟进到加密方法中,在第 12174 行,于 12186 行打下断点,控制台打印一下混淆部分内容,很熟悉的东西,这里就是 AES 加密,iv 为初始向量,加密模式为 CBC,对各类加密算法不熟悉的,可以阅读 K 哥文章 【爬虫知识】爬虫常见加密解密算法:
c 参数最后又被 d[$_DIEHS(177)]
函数加密,跟进后,定义在第 547 行,直接扣下来改改即可:
结果验证