实战解密热门js加密v6

没有废话直接上加密代码

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的话会棘手一些。

实战解密热门js加密v6_第1张图片

你可能感兴趣的:(javascript,前端)