magic toolbox 破解第一步之eval(function(p,a,c,k,e,d)系列解密javascript程序

十二 24 2009

破解函数的代码是:

<script>
a=62;
function encode() {
 var code = document.getElementById('code').value;
 code = code.replace(/[rn]+/g, '');
 code = code.replace(/'/g, "\'");
 var tmp = code.match(/b(w+)b/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)]=k1)p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k1);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;
 code = code.replace(/^eval/, '');
 document.getElementById('code').value = eval(code);
}
</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=解码>

One response so far

  1. 能解释下,运行过程吗?我现在使用它来查看 magic 的源码,不是很明白你的意思?

Leave a Reply

*