新版加密给所有js的常量,变量,函数,属性全部进行了循环生成。大规则不变:
加密结果---数组生成得到;
数组生成--- 由A,B两个数组组成;
A数组 --另外几个数组组成,B数组由另外几个数组生成。
大体逻辑在:
b=0
m=50000
r='FfXvluwiFo2Vy1Lg400QD2xv9Lx4ewLK/YD6k2EDcI8='
s = arguments[2]; //时间戳
S = "";
v = function() {
return V.apply(null, [7537].concat(Array.prototype.slice.call(arguments)));
}
f = l["call"](undefined); -----------5562
u = a["call"](undefined, r, s);
g = c["call"](undefined, f, u);
w = _["call"](undefined);
x = c["call"](undefined, g, w);
q = e["call"](undefined, b, m);
h = p["call"](undefined, b, m);
j = q + h;
z = j + S;
k = l["call"](undefined);
C = t["call"](undefined, k, j);
T = o["call"](undefined, z);
P = n["call"](undefined, x, T);
R = k[W];
Q = R["call"](k, P);
F = v["call"](undefined, Q);
O = y["call"](undefined, F);
(Jp === 6404) L = d["call"](undefined, O); 找O的值
刚通过chrome和nodejs去验证下:
大体是w = _["call"](undefined);生成的值不同
q = e["call"](undefined, b, m); //生成值不同,可能随机数
h = p["call"](undefined, b, m); //生成值不同,可能随机数
所以最主要解决w = _["call"](undefined)方法生成的数组。_方法是jp===2372进行判断。进去看下
2024-2-29补充:
前面25位数组对windows,document,navigate属性的验证:验证的都是很稀奇的内容:
大致数组位:
Gl = [xl, ql, kl, zl, El]; /[false, false, false, false, false]
Hl = [Vl, Fl, Ll, Xl, Kl]; / [true, true, true, true, true]
sc = [cc, ec, nc, yc, rc]; /[true, true, false, false, false]
Wc = [mc, jc, Sc, Pc, Ac]; /[false, false, false, false, false]
Zc = [Qc, Nc, Ic, Mc, Jc]; /[false, false, false, false, false]
为true的webkitPersistentStorage,webkitTemporaryStorage,webkitResolveLocalFileSystemURL,BatteryManager,'Google Inc.'.indexof,webkitMediaStream,webkitSpeechGrammar等属性。
nodejs环境与chrome对比:
验证通过。接下来接续看