没有废话直接上加密代码
var _js = 'jsjiami.com.v6', _js_ = ['_js'],
a = [_js, '..........., 'jsjiamqi.hcomUtSKlA.vhKM6QbzZqq=='];
if (function (c, d, e) {
function f(g, h, i, j, k, l) {
h = h >> 0x8, k = 'po';
var m = 'shift', n = 'push', l = '0.uqty5nj966j';
if (h < g) {
while (--g) {
j = c[m]();
if (h === g && l === '0.uqty5nj966j' && l['length'] === 0xd) {
h = j, i = c[k + 'p']();
} else if (h && i['replace'](/[qhUtSKlAhKMQbzZqq=]/g, '') === h) {
c[n](j);
}
}
c[n](c[m]());
}
return 0x10e469;
}
return f(++d, e) >> d ^ e;
}(a, 0x141, 0x14100), a) {
_js_ = a['length'] ^ 0x141;
}
function world2Screen(cA, cB, cC) {
var cD = {'X': cC[0x0], 'Y': cC[0x1], 'Z': cC[0x2]};
var cE = {'X': cC[0x4], 'Y': cC[0x5], 'Z': cC[0x6]};
var cF = {'X': cC[0x8], 'Y': cC[0x9], 'Z': cC[0xa]};
var cG = {
'X': cA['X'] - cB[b('2b0', 'a5vL')]['X'],
'Y': cA['Y'] - cB['Location']['Y'],
'Z': cA['Z'] - cB[b('2b1', 'Hrkg')]['Z']
};
var cH = {'X': vectorDot(cG, cE), 'Y': vectorDot(cG, cF), 'Z': vectorDot(cG, cD)};
if (cH['Z'] < 0x1) {
cH['Z'] = 0x1;
}
var cI = cB[b('2b2', 'g]ng')];
var cJ = sWidth / 0x2;
var cK = sHeight / 0x2;
var cL = {
'X': cJ + cH['X'] * (cJ / Math['tan'](cI * (Math['PI'] / 0x168))) / cH['Z'],
'Y': cK - cH['Y'] * (cJ / Math[b('2b3', 'a5vL')](cI * (Math['PI'] / 0x168))) / cH['Z']
};
return cL;
}
cacheTimer = setInterval(function () {
drawCache();
}, 0x384);
drawTimer = setInterval(function () {
if (window['draw_state']) {
console[b('2b4', 'zSD!')]('1');
shadowDraw();
if (!window[b('2b5', 'iO[(')]) window['fpscount'] = 0x0;
if (!window[b('2b6', '$aa$')]) window[b('2b7', 'Hrkg')] = performance[b('2b8', 'Cdyd')]();
window[b('2b9', 'pNZB')]++;
if (performance[b('2ba', '$aa$')]() - window['fpstime'] > app[b('2bb', 'Qi6!')]) {
window[b('2bc', 'pNZB')] = window['fpscount'];
window[b('2bd', 'XuaP')] = performance['now']();
window[b('2be', 'D52)')] = 0x0;
}
ctx['textBaseline'] = 'top';
ctx[b('2bf', 'a4tF')] = 'center';
ctx[b('2c0', '061@')] = b('2c1', 'mvL2');
ctx['fillStyle'] = b('2c2', 'iMca');
if (window[b('2c3', '$aa$')]) ctx[b('2c4', 'VI8o')](window[b('2c5', 'Cdyd')], 0x50, 0x1e);
}
}, 0x3e8 / 0x3c);
_js = 'jsjiami.com.v6';
解密后对比,只贴小部分,保护隐私。
cacheTimer = setInterval(function () {
drawCache();
}, 900);
drawTimer = setInterval(function () {
if (window.draw_state) {
console.log('1');
shadowDraw();
if (!window.fpscount) {
window.fpscount = 0;
}
if (!window.fpstime) {
window.fpstime = performance.now();
}
window.fpscount++;
if (performance.now() - window.fpstime > app.zhenlv) {
window.fps = window.fpscount;
window.fpstime = performance.now();
window.fpscount = 0;
}
ctx.textBaseline = 'top';
ctx.textAlign = 'center';
ctx.font = '50px \"Arial, sans-serif\"';
ctx.fillStyle = 'red';
if (window.fps) {
ctx.fillText(window.fps, 80, 30);
}
}
}, 16.666666666666668);
首先看开头,很明显的v6加密的标志,免费的v6加密都有这个头,一看到这个就知道是国内出名的v6加密算法,是非常好辨认的。只要是带有jsjiami.com的都是v6加密,因为这个就是他们的官网。
知道了加密类型,然后根据不同的加密方法,去解密就OK了,这个免费版的还是比较轻松的,如果是vip的话会棘手一些。