|
至少如果我看到这样的代码是不会有心思去分析它的,你哪?
六:自写解密函数法
这个方法和一、二差不多,只不过是自己写个函数对代码进行解密,很多VBS病毒使用这种方法对自身进行加密,来防止特征码扫描!下面是我写的一个简单的加密解密函数,
加密代码如下(详细参照文件"加密.htm"): <SCRIPT LANGUAGE="JavaScript"> function compile(code) { var c=String.fromCharCode(code.charCodeAt(0)+code.length); for(var i=1;i<code.length;i++){ c+=String.fromCharCode(code.charCodeAt(i)+code.charCodeAt(i-1)); } alert(escape(c)); } compile('alert("《黑客防线》");') </SCRIPT>
运行得到加密结果为: o%CD%D1%D7%E6%9CJ%u9EF3%uFA73%uF1D4%u14F1%u7EE1Kd
相应的加密后解密的代码如下: <SCRIPT LANGUAGE="JavaScript"> function uncompile(code) { code=unescape(code); var c=String.fromCharCode(code.charCodeAt(0)-code.length); for(var i=1;i<code.length;i++){ c+=String.fromCharCode(code.charCodeAt(i)-c.charCodeAt(i-1)); } return c; } eval(uncompile("o%CD%D1%D7%E6%9CJ%u9EF3%uFA73%uF1D4%u14F1%u7EE1Kd")); </SCRIPT>
七:错误的利用
利用try{}catch(e){}结构对代码进行测试解密,虽然这个想法很好(呵呵,夸夸自己),因为实用性不大,我仅给个例子 <SCRIPT LANGUAGE="JavaScript">
var a='alert("《黑客防线》");'; var c=""; for(var i=0;i<a.length;i++){ c+=String.fromCharCode(a.charCodeAt(i)^61);}
alert(c);
//上面的是加密代码,当然如果真正使用这个方法时,不会把加密写上的 //现在变量c就是加密后的代码
//下面的函数t()先假设初始密码为0,解密执行, //遇到错误则把密码加1,然后接着解密执行,直到正确运行
var d=c; //保存加密后的代码 var b=0; //假定初始密码为0 t();
function t(){ try{eval(c);}catch(e){ c=""; for(var i=0;i<d.length;i++){ c+=String.fromCharCode(d.charCodeAt(i)^b);} b+=1; t(); //setTimeout("t()",0); } } </SCRIPT>
|