没有废话间接上加密代码
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', '[email protected]')] = 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 的话会辣手一些。