让咱们通过一个案例来更好地了解JavaScript混同加密的工作原理。假如咱们有以下原始的JavaScript代码:
function addNumbers(a, b) { return a + b;}
上述代码非常简单易懂,但对于一些歹意攻击者来说,他们可能会试图窃取您的代码或者批改其中的逻辑。为了避免这种状况产生,咱们能够对代码进行混同加密,使其变得难以了解:
var _0x3d5f=["\x61\x64\x64\x4E\x75\x6D\x62\x65\x72\x73","\x2B"];function _0x1262(_0x5a08,_0x17db){return _0x5a08[_0x3d5f[0]](_0x17db);}console[_0x1262(_0x3d5f[1],2)](_0x1262(2,3),_0x1262(5,3));
通过将函数名称和操作符进行编码和替换,咱们使代码变得难以了解,即便代码被盗取或者被别人窥视,也无奈轻易了解代码的理论含意和逻辑。
尽管混同加密能够减少代码的安全性,但也给开发者带来了一些困扰。在开发过程中,咱们本人可能会遇到遗记解密代码的状况,或者须要对已有代码进行批改和调试。因而,理解如何解密混同加密的代码也是十分重要的。
上面是一个简略的JavaScript混同加密代码的解密示例:
function _0x1262(_0x5a08, _0x17db) { return _0x5a08[_0x3d5f[0]](_0x17db);}console[_0x1262(_0x3d5f[1], 2)](_0x1262(2, 3), _0x1262(5, 3));
通过对代码进行剖析和还原,咱们能够复原出原始的JavaScript代码,如下所示:
function addNumbers(a, b) { return a + b;}console.log(addNumbers(2, 3));