故事背景:
《小红帽》是一个驰名的童话故事,讲述了小女孩小红帽在去访问奶奶途中,受到了狼的歹意袭击,最终被猎人救出的经验。本文将以这个童话故事为背景,介绍 JS 混同和解密的过程。
JS 混同和解密:
JS 混同()是指通过各种伎俩,使 JavaScript 代码变得艰涩、难以了解和批改。混同能够避免代码被反编译和逆向工程,爱护原始代码的安全性。而 JS 解密()则是指对混同的代码进行还原,使其复原到原始的可读模式。
案例代码:
以下是一个简略的 JS 混同案例代码:
Copy codevar a = "red";
var b = "hood";
var c = "grandmother";
function d(e) {return Math.pow(e, 2);
}
var f = d(3);
var g = function(h, i) {return h + i;}
var j = a + b + c;
console.log(j + f + g(4, 5));
这段代码定义了三个变量 a、b 和 c,别离赋值为字符串“red”、“hood”和“grandmother”,以及一个函数 d,该函数承受一个参数 e 并返回 e 的平方。代码还定义了变量 f,其值为调用 d 函数时传入参数 3 的后果,以及变量 g,其值为一个匿名函数,承受两个参数 h 和 i 并返回它们的和。最初,代码将 a、b 和 c 相加并赋值给变量 j,而后将 j、f 和调用 g 函数时传入参数 4 和 5 的后果相加并输入。
上面咱们将对这段代码进行混同,使其变得艰涩难懂:
Copy code
var _0xa829=["\x72\x65\x64","\x68\x6F\x6F\x64","\x67\x72\x61\x6E\x64\x6D\x6F\x74\x68\x65\x72",function(_0x4c4bx2){return Math[_0xa829[3]](_0x4c4bx2,2)},0x9,d=function(_0x4c4bx4,_0x4c4bx5){return _0x4c4bx4+_0x4c4bx5},_0xa829[2]+_0xa829[1]+_0xa829[0]];console[_0xa829[6]](_0xa829[7]+ d(0x4,5)+d(0x3,_0xa829[4])+_0xa829[5]);
这段代码是通过应用字符编码和长度缩写,以及将变量名和函数名用单个字符替换的形式达到混同的目标。对代码进行解密,能够通过以下步骤实现:
Copy codevar _0xa829=["\x72\x65\x64","\x68\x6F\x6F\x64","\x67\x72\x61\x6E\x64\x6D\x6F\x74\x68\x65\x72",function(_0x4c4bx2){return Math[_0xa829[3]](_0x4c4bx2,2)},0x9,d=function(_0x4c4bx4,_0x4c4bx5){return _0x4c4bx4+_0x4c4bx5},_0xa829[2]+_0xa829[1]+_0xa829[0]];
console.log(_0xa829[7]+ d(0x4,5)+d(0x3,_0xa829[4])+_0xa829[5]);
将编码后的字符还原为可读模式,并将变量名和函数名还原为原先的名称。此时,失去的代码与原始版本的代码完全一致。
jsjiami.com
如果您对文章内容有不同认识, 或者疑难,欢送到评论区留言,或者私信我都能够。
也能够到上方网站,底部有我联系方式详谈。