JS加密和解密这两者的关系并不是单纯的矛和盾的关系,市面上很多的所谓完全不可逆JS加密是不怎么靠谱的说法,没有绝对的不可逆加密。当然也没有绝对的JS解密,在时间成本上来说JS加密比解密要快的多。
如果你需要对一个使用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[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);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!"。
这就是一个简单的jsjiami.v6版本解密过程。当然JS加密的方法方式并不局限于某一种,所以jsjiami.v6版本也在不断的升级和改进之中,努力使之能够肩负起更高级的解密方法。
如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。
标签:function,code,代码,解密,JS,v6,6f%,jsjiami From: https://www.cnblogs.com/jsjiamiV7/p/17510768.html