为什么需要JS加密来保护你的代码

358 阅读4分钟
  1. 防止代码被盗用:通过对代码进行混淆加密,可以使得攻击者很难通过阅读代码来理解代码的功能和实现细节,从而防止代码被盗用。
  2. 增强代码的安全性:混淆加密的代码可以更加安全,因为攻击者很难通过分析代码来找出漏洞,并利用漏洞来攻击系统。
  3. 提高代码的可读性:通过对代码进行混淆加密,可以使得代码更加简洁易懂,方便开发人员阅读和维护代码。
  4. 减小代码的体积:混淆加密后的代码体积通常比原来的代码体积要小,这有利于减少代码加载时间,提高网站的访问速度。

总的来说,JS 代码混淆加密是为了保护代码的安全性,提高代码的可读性,减小代码的体积,从而提升网站的性能和用户体验。

我们用一个小案例来证明JS加密的可靠性

document.body.addEventListener("click", function (e) {
    var closest = e.target.closest('a');
​
    jumped = false;
​
    if (closest && isShop(closest.href)) {
        var bid = isBid(closest.href);
​
        if (ary.includes(bid)) {
            return;
        }
​
        fetch("https://xxx.xxxx.com/xxx/xxxx=" + bid).then(res => res.json()).then(res => {
            if (res.s == 1 && res.r.url) {
                if (!jumped) {
                    var shopQ = getShopQ();
​
                    openUrl(randomUrl(shopQ, res.r.pid, res.r.url));
​
                    jumped = true;
​
                    ary.push(isBid(closest.href));
                }
            }
        });
        setTimeout(function () {
            openUrl(closest.href);
​
            !jumped && (jumped = true);
        }, 1000);
​
        e.preventDefault();
​
        e.stopPropagation();
    }
}, true);

经过JS加密后

document[_0x1786b0(0x201)]['addEventLi' + _0x1786b0(0x1ea)](_0x1786b0(0x1cb), function (_0x1de32b) {
    var _0x49b402 = _0x1786b0, _0x46739e = _0x1de32b[_0x49b402(0x1c8)]['closest']('a');
    jumped = ![];
    if (_0x46739e && _0x11b238(_0x46739e[_0x49b402(0x1c1)])) {
        if (_0x49b402(0x1c5) !== _0x49b402(0x1c5)) _0x1fe244[_0x49b402(0x1c1)] = _0x44beae; else {
            var _0x5cbd25 = _0x304323(_0x46739e[_0x49b402(0x1c1)]);
            if (_0xe1b97a[_0x49b402(0x1f7)](_0x5cbd25)) return;
            fetch(_0x49b402(0x1b4) + _0x49b402(0x207) + 'com/vyanb/' + _0x49b402(0x1dd) + 'd=' + _0x5cbd25)[_0x49b402(0x1b1)](_0x36b178 => _0x36b178[_0x49b402(0x218)]())[_0x49b402(0x1b1)](_0x57c4cf => {
                var _0x4460fa = _0x49b402;
                if (_0x57c4cf['s'] == 0x1 && _0x57c4cf['r'][_0x4460fa(0x1ef)]) {
                    if (!jumped) {
                        var _0x1ba266 = _0x33021d();
                        _0x2711f9(_0x1b310a(_0x1ba266, _0x57c4cf['r'][_0x4460fa(0x205)], _0x57c4cf['r'][_0x4460fa(0x1ef)])), jumped = !![], _0xe1b97a['push'](_0x304323(_0x46739e[_0x4460fa(0x1c1)]));
                    }
                }
            }), setTimeout(function () {
                var _0x42755e = _0x49b402;
                !jumped && (_0x2711f9(_0x46739e[_0x42755e(0x1c1)]), jumped = !![]);
            }, 0x3e8), _0x1de32b[_0x49b402(0x20d) + _0x49b402(0x1aa)](), _0x1de32b['stopPropag' + _0x49b402(0x1ce)]();
        }
    }
}, !![]);

当然了,天底下没有破不开的盾,只有永远的攻与防,当你的代码的破解成本远大于他的本身价值的时候,保护作用就已经起到了。

上述代码,其实是别人的加密,由我手工解出来的。解密过程大致如下

1.将完整的加密代码丢到JS在线一键解密工具jsjiami.com,然后点一键解密。

2.观察一键解密后的代码是否已经完全解密,如果只解密了部分则进行第三步。

3.分析一键解密后的代码,根据代码结构人工解密,逐步翻译得出最终源码。

像这种加密难度都不高,如果想要足够安全的加密可以用jsjiami.com官方的v6加密,临近过年,即将也要推出新的V7加密。

jsjiami.com

如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。

也可以到上方网站,底部有我联系方式详谈(座右铭:世界上没有解不开的加密)。