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