故事背景:
《小红帽》是一个著名的童话故事,讲述了小女孩小红帽在去拜访奶奶途中,遭到了狼的恶意袭击,最终被猎人救出的经历。本文将以这个童话故事为背景,介绍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=["x72x65x64","x68x6Fx6Fx64","x67x72x61x6Ex64x6Dx6Fx74x68x65x72",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=["x72x65x64","x68x6Fx6Fx64","x67x72x61x6Ex64x6Dx6Fx74x68x65x72",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
如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。
也可以到上方网站,底部有我联系方式详谈。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net