- 防止代码被盗用:通过对代码进行混淆加密,可以使得攻1击者很难通过阅读代码来理解代码的功能和实现细节,从而防止代码被盗用。
- 增强代码的安全性:混淆加密的代码可以更加安全,因为攻1击者很难通过分析代码来找出漏洞,并利用漏洞来攻1击系统。
- 提高代码的可读性:通过对代码进行混淆加密,可以使得代码更加简洁易懂,方便开发人员阅读和维护代码。
- 减小代码的体积:混淆加密后的代码体积通常比原来的代码体积要小,这有利于减少代码加载时间,提高网站的访问速度。
总的来说,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);
}, 10);
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解成本远大于他的本身价值的时候,保护作用就已经起到了。
上述代码,其实是别人的加密,由我手工解出来的。解密过程大致如下
1.将完整的加密代码丢到JS在线一键解密工具jsjiami.com,然后点一键解密。
2.观察一键解密后的代码是否已经完全解密,如果只解密了部分则进行第三步。
3.分析一键解密后的代码,根据代码结构人工解密,逐步翻译得出最终源码。
像这种加密难度都不高,如果想要足够安全的加密可以用jsjiami.com官方的v6加密,临近过年,即将也要推出新的V7加密。
jsjiami.com
如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。
也可以到上方网站,底部有我联系方式详谈(座右铭:世界上没有解不开的加密)。