现在的位置: 首页 > 综合 > 正文

◎VBS编程打造自己的病毒专杀工具

2013年09月21日 ⁄ 综合 ⁄ 共 1724字 ⁄ 字号 评论关闭

VBS病毒应该来说还是挺流行的,其力量不可小觑啊!用VBS写一只普通病毒(蠕虫)没有什么难度,写病毒专杀工具也是没什么难度的。但在写出专杀工具前必须了解你要杀的这只病毒的一些信息……比如:病毒释放的文件,感染的文件,注册表与进程里的病毒信息等等。

一、首先来看如何结束病毒进程,之前我在《两个简易VBS脚本结束进程与防止进程启动》给出了关于进程的一些操作方法。假如要结束的病毒进程为rund1132.exe32之前是两个数字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.exec:/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病毒”的代码,就会发现它在感染文件时使用的正是这样的遍历、后缀判别的方法……

三、注册表是关键。有些病毒是很变态的,将系统的许多功能都给禁用了,还往注册表里塞一大堆垃圾信息……它要是把WSHwindows脚本宿主)给禁用了或破坏了那我们辛辛苦苦写的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打造自己的病毒专杀工具就有成形了,框架就是这样。根据不同的病毒特征写出不同的专杀工具。 

抱歉!评论已关闭.