2014年10月21日

javascript eval加密的解密方法


切图网(www.qietu.com):对于javascript被eval加密了,要如何解密它呢,目前在测试获取访客qq号的时候,网上下载了一款源代码,不幸最核心的js被加密了,首先想到的就是eval解密,下面方法亲测可行,并且非常之有效。

eval(function(p,a,c,k,e,d) 加密破解JS代码de方法

最近遇到了一段js代码是通过 eval(function(p,a,c,k,e,d) 方式加密的。

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}

想了一下,其实这种加密方式解密很非常简单,因为函数本地就带有解密函数e()。

while(c–){if(k[c]){p=p.replace(new RegExp(‘\\b’+e(c)+’\\b’,’g’),k[c])}}return p;

while循环产生的每个p就是解码后的函数代码,我们删掉源码中的return p,不用将结果返回, 而是直接输出在一个文本区域中,如document.getElementById(”textareaID”).innerText=p就可以了。

其实还可以这样 eval()函数 直接换成输出document.write()函数直接将js代码输出就ok了。不过这里需要注意 在输出的js代码前后加上 <xmp> </xmp>。

例如:

document.write(“<xmp>”);

/*eval*/document.write(“function(){…..代码}”);

document.write(“</xmp>”);

这样获取到了 js源码 在用格式化工具格式一下就更清晰了:

切图网是国内首家致力于网页切图等web开发的公司。

标签:,

微信扫一扫二维码访问