4)通过网页传播的病毒需要ActiveX的支持。 5)通过Email传播的病毒需要OE的自动发送邮件功能支持,但是绝大部分病毒都是以Email为主要传播方式的。 内容来自www.paper51.com
4.2 VBScript脚本病毒原理分析 内容来自www.paper51.com 4.2.1感染破坏文件部分 内容来自www.paper51.com 定义系统文件操作对象,通过getfolder方法得到文件夹下的所有文件,通过getextentionname方法得到所有文件的后缀名,比较后缀名,如果后缀名是“html”,“htm”,“xls”,“doc”,“ppt”,“vbs”,则将vbscopy变量写入文件,覆盖原文件的内容,实现感染功能。如果后缀名是“exe”,“com”,“bat”,则直接删除文件。递归调用上述步骤。 内容来自论文无忧网 www.paper51.com 4.2.2修改注册表 http://www.paper51.com
定义修改注册表过程regcreate,调用regcreate过程实现注册表的修改 内容来自论文无忧网 www.paper51.com 4.2.3设置感染标记 paper51.com
打开当前文件,读入当前文件,判断是否有“Rem You have infected by raul virus”字段。如果匹配,则该文件已经被感染,如果无匹配,则实行感染操作。感染操作为读入病毒代码。 http://www.paper51.com 具体步骤及实现代码请参见下一部分。 内容来自论文无忧网 www.paper51.com 5 脚本病毒的实现 内容来自论文无忧网 www.paper51.com
5.1 脚本病毒必要知识 http://www.paper51.com FSO简介 paper51.com FSO(File System Object)对象模型能对文件系统进行访问处理。该模型提供了一个基于对象的工具,通过它所提供的一系列属性和方法,可以在应用程序中更简单、灵活地对文件系统进行各种操作。 内容来自www.paper51.com FSO对象模型包含以下几种对象: copyright paper51.com
Drive对象:允许收集系统物理或通过LAN与系统逻辑连接的硬盘、CD-ROM等驱动器的可用空间、共享名等信息。 http://www.paper51.com
Folder对象:允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等。 内容来自论文无忧网 www.paper51.com Files对象:允许创建、删除或移动文件,并向系统查询文件的名称、路径等。 内容来自www.paper51.com
TextStream对象:允许创建和读写文本文件。 paper51.com FileSystemObject对象:提供一整套用于驱动器、文件夹和文件操作的方法,在功能上可以把它看作是上面几个对象的集合并且经常与它们配合使用。与该对象相关联的很多方法重复了前面四个对象中的方法,因此既可以通过FileSystemObject对象来对驱动器、文件夹和文件进行大多数操作,也可以通过对应的驱动器、文件夹或文件对象对这些组件进行操作。FSO模型通过两种方法实现对同一对象的操作,其操作效果是相同的,提供这种冗余功能的目的是为了实现最大的编程灵活性。 内容来自www.paper51.com 5.1.1获取文本文件对象 内容来自www.paper51.com 1.创建一个FileSystemObject对象实例要进行文件操作,首先必须创建一个FileSystemObject对象实例,用来创建或打开一个文件.创建一个FileSystemObject对象实例的具体格式为(以FSO)为例:Set FSO = CreateObject("Scripting.FileSystemObjecct") copyright paper51.com 2.用FileSystemObjec来获取文本文件对象TextStreamFileSystemObject提供了两种方法用于获取文本文件对象TextStream,其中用于创建文件的是 CreateTextFile,用于打开已存在文件的是 OpenTextFile,两种方法的返回结果都是一个TextStream 对象的实例,利用该对象可以进行文件的具体操作. 内容来自论文无忧网 www.paper51.com
①创建一个新文件 http://www.paper51.com
创建新文件的方法的具体格式为(以FSO为例): 内容来自论文无忧网 www.paper51.com FSO.CreateTextFile(NewFileName,OverwriteExistingFile,IsUnicode) http://www.paper51.com
其中:NewFileName 是一个string值,指定要建立的文件的名称,通常为文件的实际路径加文件名称。 copyright paper51.com OverwriteExistingFile是一个Boolean值,表示如果有同名文件存在时是否覆盖原来的文件.该参数可以省略,缺省时为False,即不覆盖原来文件. copyright paper51.com IsUnicode 是一个Boolean值,表示要建立的文件是ASCII文件还是Unicode文件,该参数可以省略,缺省时为False,即为ASCII文件. copyright paper51.com ②打开已存在的文件 paper51.com 打开已存在文件的方法的具体格式为(以FSO为例): 内容来自论文无忧网 www.paper51.com FSO.OpenTextFile(FileName,IOMode,create,format)其中: copyright paper51.com FileName是一个string值,指定要打开的文件的名称,通常为文件的实际路径加文件名称。 paper51.com IOMode是常数值,表示打开文件的目的,ForReading(1)表示用于读取数据; 内容来自论文无忧网 www.paper51.com
ForAppending表示用于增加数据.该参数可以省略,缺省时为ForReading. copyright paper51.com Create是一个Boolean值,表示要打开的文件不存在时是否创建新文件, copyright paper51.com 该参数可以省略,缺省时为False,即不创建新文件。 paper51.com Format表示文件打开的方式.其可能的值及含义如下: paper51.com TristateTrue:以Unicode的方式打开。 paper51.com TristateFalse:以ASCII的方式打开。 内容来自www.paper51.com TristateUseDefault:以系统默认的方式打开。 内容来自www.paper51.com
该参数可以省略,缺省时为TristateFalse,即ASCII方式. paper51.com
5.1.2对文件的操作 http://www.paper51.com 在建立或打开了文件之后,就可利用对象TextStream提供的方法进行文件的实际操作了. http://www.paper51.com
1.用于写操作的方法有: 内容来自www.paper51.com ①Write(string) paper51.com 将由string指定的字符串写入到文件中。 copyright paper51.com ②WriteLine(string) copyright paper51.com
在文件中写入由string指定的字符串,并写入一个换行字符。 http://www.paper51.com 参数string可以省略,此时将在文件中插入一个空行。 内容来自论文无忧网 www.paper51.com ③WriteBlankLines(NumOfLines) copyright paper51.com
在文件中插入若干空行,行数由NumOfLines指定。 内容来自论文无忧网 www.paper51.com 2.用于读操作的方法和属性方法有: paper51.com ①AtEndOfLine copyright paper51.com 该属性是一个Boolean值,表示文件指针是否已指向当前行的行尾。 paper51.com
②AtEndOfStream http://www.paper51.com 该属性是一个Boolean值,表示文件指针是否已指向文件尾。 http://www.paper51.com ③Column http://www.paper51.com |