• RainbowSoft Studio Z-Blog
  • RainbowSoft Studio Z-Blog
  • 本站支持WAP访问
  • 订阅本站的 RSS 2.0 新闻聚合
Name:密陀僧
Email:sunwindy[A]gmail.com

javascript(js)使用eval方法加密过的函数解密方法

Post by 密陀僧, 2009-6-23, Views:
很多网站过于保守,js代码使用eval(function……这样的方法编写,function部分的内容被加密,作为客户端执行的代码,这样的加密当然很容易被破解了。最简单的方法,模拟执行一次eval动作,把结果显示在文本框即可。

<script>    
a=62;    
function encode() {    
 var code = document.getElementById('code').value;    
 code = code.replace(/[ ]+/g, '');    
 code = code.replace(/'/g, "\'");    
 var tmp = code.match(/(w+)/g);    
 tmp.sort();    
 var dict = [];    
 var i, t = '';    
 for(var i=0; i<tmp.length; i++) {    
 if(tmp[i] != t) dict.push(t = tmp[i]);    
 }    
 var len = dict.length;    
 var ch;    
 for(i=0; i<len; i++) {    
 ch = num(i);    
 code = code.replace(new RegExp('\b'+dict[i]+'\b','g'), ch);    
 if(ch == dict[i]) dict[i] = '';    
 }    
 document.getElementById('code').value = "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}("    
 + "'"+code+"',"+a+","+len+",'"+ dict.join('|')+"'.split('|'),0,{}))";    
}   
  
function num(c) {    
 return(c<a?'':num(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36));    
}   
  
function run() {    
 eval(document.getElementById('code').value);    
}   
  
function decode() {    
 var code = document.getElementById('code').value;    
 code2 = code.replace(/^eval/, '');    
 //alert(code);   
 document.getElementById('code').value = eval(code2);    
}    
</script>   
  
<textarea id=code cols=80 rows=20>   
</textarea>   
  
    
<input type=button onclick=encode() value=编码>    
<input type=button onclick=run() value=执行>    
<input type=button onclick=decode() value=解码>  


创建一个html文件,将上述代码复制进去保存后打开。输入要解密的js代码,点击解码即可。
Tags: javascript  eval  解密 
分类:技术 | 评论:0 | 引用:0 | 点击这里获取该日志的TrackBack引用地址
上一篇:c# The remote server returned an error: (417) Expectation failed 错误解决
下一篇:Google adsense关于帐户少钱的问题原因官方人员的解释

或许你还对下面的文章感兴趣

Comments

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Hot Articles

New Articles

Last Comments

Guest