|
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打造自己的病毒专杀工具就有成形了,框架就是这样。根据不同的病毒特征写出不同的专杀工具。把上面的代码都装到一个vbs文件里,我反复测试了,放心没问题的。不过至于代码的优化就自己把握吧……Ycosxhack奉上,希望对战斗在VIRUS世界中的大家有点帮助^_^!!
|
|