• 客服QQ:1193846053   微信:suyoufuwu   联系电话:13080553467     

JS eval加密的代码如何解密?

速优网络(10年经验),服务数万家企业,固定透明报价。域名注册、主机/服务器、网站源码一站式服务。实体公司,专业团队,值得选择!建站业务:企业网站建设、公司官网制作、外贸网站建设、网站仿制、网站复制、仿站、外贸建站、单页扒站 客服微信【suyoufuwu】


JS的eval加密方法,很古老,也很常见。其解密方法,也非常简单。

类似于下面这样的JS加密代码,相信很多人都见到过:

eval(function(p,a,c,k,e,d){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--)d[e(c)]=k[c]||e(c);k=[function(e){return d[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}('8 a(){    f 6 = "b.3";    f 7 = 0;    f 5 = "(2)" + 7 + "-" + (d 1).9() + "," + 6;    e 5;}4.c(a());    ',62,16,'2017|Date|c|com|console|copyright|domain|from_year|function|getFullYear|get_copyright|jshaman|log|new|return|var'.split('|'),0,{}))

很多朋友以为这段js代码是“加密”的,其实这甚至谈不上是真正的加密,只能算是一种编码(Encode)。类似于base64这样的编码,都是可以以一定方式还原的,当然也就是js解密了。

分析这一段js加密代码,可发现代码开头都是eval,特征字符串是function(p,a,c,k,e,r)或者是function(p,a,c,k,e,d)

解密原理很简单,回顾一下JavaScript脚本中eval含义及用法:检查JS代码并执行。

eval(codeString)

必选项codestring参数是包含有效JS代码的字符串值。这个字符串将由JS分析器进行分析和执行。

既然eval执行的字符串是参数,那么function(p,a,c,k,e,r)函数肯定返回的是字符串,就是我们要解密的js源代码,其实function(p,a,c,k,e,r)相当于是个自解码函数,返回的就是解密好的js源代码,然后传递给eval,那么这段解码后的字符串脚本就执行了。

那么,替换eval函数就可以了,比如替换成alert或者document.write,或console.log,明文代码就显示出来了?就完成解密了。就是如此简单

在网页控制台中把上面的代码中eval,替换成console.log,即可完成eval解密,代码如下:

console.log(function(p,a,c,k,e,d){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--)d[e(c)]=k[c]||e(c);k=[function(e){return d[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}('8 a(){    f 6 = "b.3";    f 7 = 0;    f 5 = "(2)" + 7 + "-" + (d 1).9() + "," + 6;    e 5;}4.c(a());    ',62,16,'2017|Date|c|com|console|copyright|domain|from_year|function|getFullYear|get_copyright|jshaman|log|new|return|var'.split('|'),0,{}))

解密得到的JS代码:

function get_copyright() {
    var domain = "jshaman.com";
    var from_year = 2017;
    var copyright = "(c)" + from_year + "-" + (new Date).getFullYear() + "," + domain;
    return copyright;
}

console.log(get_copyright());

因此可见,eval加密看起来像回事,实际上,只需简单的替换就解密了,实在称不上加密。

如果实际的工作中遇到需要对JS代码进行加密,还需使用如JShaman之类的专业JS代码混淆加密工具,才能真正保护代码安全。

以上就是速优网络和大家分享的"JS eval加密的代码如何解密?",非常感谢您有耐心的读完这篇文章,我们将为您提供更多参考使用或学习交流的信息。我们还可为您提供:企业网站建设、网站仿制、网站复制、仿站、外贸网站建设、外贸建站、公司官网制作等服务,本公司以“诚信、专业、务实、创新”的服务理念服务于客户。如您需要合作,请扫码咨询,我们将诚挚为您服务。

TAG标签:

全国分站

全国分站