修复意见:
1. 使用代码混淆工具对敏感代码进行混淆,以增加逆向工程的难度。
2.定期审查和更新代码,以确保不含有可被利用的漏洞。
3. 实施访问控制,限制对源代码的访问权限,避免未授权的查看和修改。
接收数据:
var __TENCENT_CHAOS_VM = function() {
var a = function a(c, d, e) {
var b = [], f = 0;
while (f++ < d) {
b.push(c += e);
}
return b;
};
var c = function c(i) {
var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split("");
var f = String(i).replace(/[=]+$/, ""), j = f.length, b, a, d = 0, e = 0, h = [];
for (;e < j; e++) {
a = g[f.charCodeAt(e)];
~a && (b = d % 4 ? 64 * b + a : a, d++ % 4) ? h.push(255 & b >> (-2 * d & 6)) : 0;
}
return h;
};
var d = function d(a) {
return a >> 1 ^ -(1 & a);
};
var b = function b(i) {
var f = [];
var g = new Int8Array(c(i));
var j = g.length;
var h = 0;
while (j > h) {
var a = g[h++];
var e = 127 & a;
if (a >= 0) {
f.push(d(e));
continue;
}
a = g[h++];
e |= (127 & a) << 7;
if (a >= 0) {
f.push(d(e));
continue;
}
a = g[h++];
e |= (127 & a) << 14;
if (a >= 0) {
f.push(d(e));
continue;
}
a = g[h++];
e |= (127 & a) << 21;
if (a >= 0) {
f.push(d(e));
continue;
}
a = g[h++];
e |= a << 28;
f.push(d(e));
}
return f;
};
var e = [];
var f;
var g = a(0, 43, 0).concat([ 62, 0, 62, 0, 63 ]).concat(a(51, 10, 1)).concat(a(0, 8, 0)).concat(a(0, 25, 1)).concat([ 0, 0, 0, 0, 63, 0 ]).concat(a(25, 26, 1));
var h = b;
return function g(b, c) {
var i = h(b);
var d, a;
var a = function(b, c, d, g, h) {
return function r() {
var k = [ d, g, c, this, arguments, r, i, 0 ];
var l = void 0;
var j = b;
var o = [];
var q, m, n, s;
while (true) {
try {
while (true) {
switch (i[++j]) {
case 0:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = k[i[++j]];
k[i[++j]][k[i[++j]]] = k[i[++j]];
break;
case 1:
k[i[++j]] = i[++j];
break;
case 2:
j += k[i[++j]] ? i[++j] : i[(++j, ++j)];
break;
case 3:
k[i[++j]] = k[i[++j]].call(k[i[++j]], k[i[++j]]);
k[i[++j]] = l;
return k[i[++j]];
break;
case 4:
return k[i[++j]];
break;
case 5:
k[i[++j]] = k[i[++j]] < i[++j];
break;
case 6:
k[i[++j]] += String.fromCharCode(i[++j]);
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
break;
case 7:
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = "";
break;
case 8:
k[i[++j]] = k[i[++j]] + i[++j];
break;
case 9:
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
break;
case 10:
o.pop();
break;
case 11:
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
break;
case 12:
k[i[++j]] = -k[i[++j]];
break;
case 13:
k[i[++j]][i[++j]] = k[i[++j]];
break;
case 14:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = k[i[++j]];
break;
case 15:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = k[i[++j]][k[i[++j]]];
break;
case 16:
k[i[++j]][k[i[++j]]] = k[i[++j]];
break;
case 17:
k[i[++j]] = k[i[++j]].call(k[i[++j]]);
break;
case 18:
k[i[++j]] = k[i[++j]] == k[i[++j]];
break;
case 19:
o.push(j + i[++j]);
break;
case 20:
k[i[++j]] = !k[i[++j]];
break;
case 21:
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = i[++j];
break;
case 22:
k[i[++j]] = {};
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = "";
break;
case 23:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]][k[i[++j]]] = k[i[++j]];
break;
case 24:
k[i[++j]] = k[i[++j]] + k[i[++j]];
break;
case 25:
k[i[++j]] += String.fromCharCode(i[++j]);
k[i[++j]] += String.fromCharCode(i[++j]);
break;
case 26:
k[i[++j]] = k[i[++j]];
break;
case 27:
k[i[++j]] = k[i[++j]][i[++j]];
m = [];
for (n = i[++j]; n > 0; n--) m.push(k[i[++j]]);
k[i[++j]] = a(j + i[++j], m, d, g, h);
try {
Object.defineProperty(k[i[j - 1]], "length", {
value: i[++j],
configurable: true,
writable: false,
enumerable: false
});
} catch (t) {}
k[i[++j]][k[i[++j]]] = k[i[++j]];
break;
case 28:
k[i[++j]] += String.fromCharCode(i[++j]);
break;
case 29:
k[i[++j]] = k[i[++j]];
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
break;
case 30:
k[i[++j]] = k[i[++j]].call(k[i[++j]], k[i[++j]], k[i[++j]]);
break;
case 31:
k[i[++j]] = k[i[++j]].call(l);
break;
case 32:
k[i[++j]] = k[i[++j]].call(l, k[i[++j]]);
break;
case 33:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = Array(i[++j]);
k[i[++j]][i[++j]] = k[i[++j]];
break;
case 34:
k[i[++j]] = k[i[++j]][k[i[++j]]];
break;
case 35:
k[i[++j]] = q;
break;
case 36:
k[i[++j]] += String.fromCharCode(i[++j]);
k[i[++j]] += String.fromCharCode(i[++j]);
k[i[++j]] += String.fromCharCode(i[++j]);
break;
case 37:
k[i[++j]] = l;
break;
case 38:
k[i[++j]] = k[i[++j]] - i[++j];
break;
case 39:
m = [];
for (n = i[++j]; n > 0; n--) m.push(k[i[++j]]);
k[i[++j]] = a(j + i[++j], m, d, g, h);
try {
Object.defineProperty(k[i[j - 1]], "length", {
value: i[++j],
configurable: true,
writable: false,
enumerable: false
});
} catch (u) {}
break;
case 40:
j += i[++j];
break;
case 41:
k[i[++j]] = k[i[++j]].call(k[i[++j]], k[i[++j]], k[i[++j]], k[i[++j]]);
break;
case 42:
k[i[++j]] = k[i[++j]][i[++j]];
break;
case 43:
k[i[++j]] = new k[i[++j]](k[i[++j]]);
break;
case 44:
k[i[++j]] = k[i[++j]] > k[i[++j]];
break;
case 45:
k[i[++j]] += String.fromCharCode(i[++j]);
k[i[++j]] = k[i[++j]] == k[i[++j]];
j += k[i[++j]] ? i[++j] : i[(++j, ++j)];
break;
case 46:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = {};
k[i[++j]] = k[i[++j]][i[++j]];
break;
case 47:
k[i[++j]] = k[i[++j]];
k[i[++j]] = l;
return k[i[++j]];
break;
case 48:
k[i[++j]] = "";
break;
case 49:
k[i[++j]] = new k[i[++j]]();
break;
case 50:
k[i[++j]] = k[i[++j]].call(l, k[i[++j]], k[i[++j]]);
break;
case 51:
k[i[++j]] = k[i[++j]].call(k[i[++j]], k[i[++j]]);
break;
case 52:
k[i[++j]][k[i[++j]]] = k[i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]][k[i[++j]]] = k[i[++j]];
break;
case 53:
k[i[++j]] = k[i[++j]] * k[i[++j]];
break;
case 54:
k[i[++j]] = {};
break;
case 55:
throw k[i[++j]];
break;
case 56:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = k[i[++j]][i[++j]];
break;
case 57:
k[i[++j]] = k[i[++j]] == i[++j];
break;
case 58:
k[i[++j]] = Array(i[++j]);
break;
case 59:
k[i[++j]] = k[i[++j]][i[++j]];
k[i[++j]] = "";
k[i[++j]] += String.fromCharCode(i[++j]);
break;
}
}
} catch (p) {
p = VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL.handleException(p);
if (o.length > 0) {
f = j;
e = [];
}
q = p;
e.push(j);
if (0 === o.length) {
throw h ? h(p, k, e) : p;
}
j = o.pop();
e.pop();
}
}
};
};
return c ? d : a;
};
}();
function a(b, a) {
if (null != a && "undefined" != typeof Symbol && a[Symbol.hasInstance]) {
return !!a[Symbol.hasInstance](b);
}
return b instanceof a;
}
__TENCENT_CHAOS_VM("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
