在当今的互联网时代,JavaScript 是 web 开发的核心技术之一。然而,为了爱护 JavaScript 代码的安全性,很多开发者会应用 JS 加密技术。其中一个罕用的 JS 加密工具是 jsjiami.v6。
JS 加密通过对 JavaScript 代码进行混同、压缩、编码等多种操作,使得代码难以被了解和批改。这不仅能够避免歹意攻打,还能够爱护商业秘密。
然而,如果你须要对一个应用 jsjiami.v6 加密的 JavaScript 代码进行批改或解析,就须要进行解密操作。接下来,我将为您介绍一些 JS 解密技巧。
首先,让咱们来看一段应用 jsjiami.v6 加密的代码:
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k)p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k);return p;}('0 1(){2.3("4 5!");}',6,6,'function|foo|console|log|Hello|World'.split('|'),0,{}))
这是一个简略的函数,输入了 ”Hello World!”。然而,因为被加密,代码难以了解。当初,让咱们来解密它。
第一步,咱们须要将代码放到一个 JS 丑化工具中,以便更好地了解代码构造。能够应用在线工具如 JS Beautifier 或 JS Nice 进行丑化。
function foo() {console.log("Hello World!");
}
当初咱们能够看到这个函数输入了 ”Hello World!”。然而,代码依然无奈执行,因为它是通过压缩和编码的。
第二步,咱们须要手动解码代码。这段代码应用了一个自定义的解码函数,它会将字符串解密为可执行的代码。上面是解密函数:
function decode(code) {
var a = 62,
b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
c = RegExp("[^" + b.substr(0, a) + "]","g"),
code = code.replace(c, ""),
d = code.length,
e = 0,
f = "";
for (; e < d;) {var g = b.indexOf(code.charAt(e++)),
h = b.indexOf(code.charAt(e++)),
i = b.indexOf(code.charAt(e++)),
j = b.indexOf(code.charAt(e++)),
k = g << 2 | h >> 4,
l = (15 & h) << 4 | i >> 2,
m = (3 & i) << 6 | j;
f += String.fromCharCode(k),
64 != i && (f += String.fromCharCode(l)), 64 != j && (f += String.fromCharCode(m))
}
return f
}
能够看到,这个解密函数应用了一个字符串和数字的映射表,将加密后的字符串解密成原始代码。当初咱们将解密函数利用到原始代码上:
function foo() {console.log("Hello World!");
}
eval(decode('0%20%66%75%6e%63%74%69%6f%6e%20%66%6f%6f%28%29%20%7b%0a%20%20%63%6f%6e%73%6f%6c%65%2e%6c%6f%67%28%22%48%65%6c%6c%6f%20%57%6f%72%6c%64%21%22%29%3b%0a%7d'))
咱们能够看到,这个代码当初曾经能够执行,输入了 ”Hello World!”。
这就是一个简略的 JS 解密过程。尽管这个例子比较简单,然而如果您须要解密更简单的 JS 代码,您可能须要应用更高级的解密技术,例如 AST 解析和反混同等。
总之,JS 加密是爱护 JavaScript 代码安全性的一种无效伎俩。然而,如果您须要对加密代码进行批改或解析,您也能够应用一些解密技巧来实现。心愿本文能对您有所帮忙。