Virus 版 (精华区)
发信人: september (金色收获的九月), 信区: Virus
标 题: 宏病毒详解
发信站: 紫 丁 香 (Wed Oct 20 11:21:31 1999), 转信
宏病毒详解
之所以将宏病毒单独列出来,是因为它与传统的病毒有很大不同。它不感染.EXE,.COM
等可执行文件,而是将病毒代码以“宏”的形式潜伏在Microsoft Office文件中,当采
用Office软件打开这些染毒文件时,这些代码就会被执行并产生破坏作用。由于“宏”
是使用Visual Basic For Application这样的高级语言编写的,因此其编写过程相对比
较简单,而功能又十分强大。宏病毒的产生标志着制造病毒不再是专业程序员的专利,
一个心怀不轨的人只需掌握一些基本的“宏”编写技巧即可编写出破坏力很大的宏病
毒。随着微软Office软件在全世界范围内的不断普及,宏病毒成为了传播最广泛,危害
最大的一类病毒。
让宏显形
在了解宏病毒之前,首先让我们认识一下“宏”到底是什么(考虑到一般见到的都是
Word宏病毒,下面的文章将以Word宏病毒为例进行讲解。)。宏是将一系列的 Word 命
令和指令组合在一起,形成一个命令,以实现任务执行的自动化。你可创建并执行一个
宏,以替代人工进行一系列费时而重复的 Word操作。事实上,它是一个自定义命令,用
来完成所需任务。宏的最典型应用包括加速日常编辑和格式设置、组合多个命令、使对
话框中的选项更易于访问、使一系列复杂的任务自动执行。举例来说,在使用Word编写
文档时我们可能会需要输入"×、¥、℃"等符号,如果使用传统方法,通过打开插入菜
单中的符号选项产生的对话框(见图1)来添加符号实在是很麻烦。我们可以利用微软在
Office中提供的Symbar.dot模板(通常在<dir>\office\macros\子目录内,<dir>是指
Office的安装目录)。这个模板中包含的宏可在Word使用界面上添加一个关于符号的工
具条(见图2)。通过选择工具菜单下的“宏”选项(或按下Alt+F8)打开宏对话框,我
们可以看到使这一工具条生效的宏的名称(见图3)。点击“编辑”按钮,随之打开的是
Microsoft Visual Basic编辑器,我们可以看到这是一个功能齐备的程序开发环境,而
刚才那些宏背后的程序也显现在了程序代码(Code)窗口中(见图4)。Symbar.dot中的
宏实现的功能非常简单,因此程序也不复杂,而图5中的宏则是一个相当复杂的程序,这
是宏示例模板中的AddToStd宏。
认识“宏病毒”
既然了解了宏的概念,那么宏病毒也就不难理解了。宏病毒与有用的正常宏采用相同的
语言编写,只是这些宏的执行效果有害,而且在编写上利用了Word允许宏自动执行这一
特点,使用户在打开文件时不知不觉地就运行了这些病毒程序。早期的宏病毒破坏方式
往往是更改所附着的文档内容、扰乱文档的正常打印、开启一个无法关闭的对话框或不
断开启新的文件直到系统资源耗尽,Word运行出错为止等。随着Office新版本的推出,
微软不断加强宏的功能,宏病毒的危害也就越来越大。前一段流行的Melissa病毒是利用
宏来使E-Mail管理程序Outlook自动根据其通讯录中记录的前五十个地址发信,而最近较
有影响的July Killer(七月杀手)宏病毒的破坏方式则是产生一个只有一句话
"deltree/y c:\"的Autoexec.bat文件来替代你现有的该文件,当你下次启动机器时这条
指令就会删除你C盘中的所有文件,同时该病毒还会使“工具”菜单下的“宏”、“模板
和加载项”、“自定义”、“选项”等选项无法工作,以达到阻止采用编辑宏等一般方
法来手动清除病毒的目的。由此可见,当今宏的功能已经强大到可以操纵软件运行,更
改文件内容的地步,这也是防"宏"成为反病毒工作重要组成部分的原因。
宏病毒的传染途径
前面提到,病毒的最基本特征是传染性,那宏病毒又是怎样传染的呢?首先让我们来看
看Word的工作过程。为了使Word更易用,微软在Word中集成了许多模板,如典雅型传
真、典雅型报告、典雅型通讯录模板等。这些模板不仅包含了相应类型文档的一般格
式,而且还允许用户在模板内添加宏,使得用户在制作自己的特定格式文件时,减少重
复劳动。在所有这些模板中,最常用的就是Normal.dot模板(通用模板),它是启动
Word时载入的缺省模板。任何一个Word文件,其背后都有相应的模板,我们打开或建立
大多数Word文档时,系统都会自动装入Normal.dot模板并执行其中的宏。Word处理文档
时,需要进行各种不同的操作,如打开文件、关闭文件、读取数据资料以及储存和打印
等等。每一种动作其实都对应着特定的宏命令,如存文件与File Save相对应、改名存文
件对应着File Save AS,打印则对应着File Print等等。这些宏命令集合在一起构成了
通用宏,通用宏保存在模板文件中,以使得Word启动后可以有效地工作。Word打开文件
时,它首先要检查文件内包含的宏是否有自动执行的宏(AutoOpen宏)存在,假如有这
样的宏,Word就启动它。当然,如果Auto Close宏存在,则系统在关闭一个文件时,会
自动执行它。通常,Word宏病毒至少会包含一个以上的自动宏,当Word运行这类自动宏
时,实际上就是在运行病毒代码。宏病毒的内部都具有把带病毒的宏移植(复制)到通用
宏的代码段,也就是说当病毒代码被执行过后,它就会将自身复制到通用宏集合内。当
Word 系 统退出时,它会自动地把所有通用宏(当然也包括传染进来的病毒宏)保存到模板
文件中(通常是Normal.dot模板)。这样,一旦Word系统遭受感染,则以后每当系统进
行初始化时,系统都会随着Normal.dot的装入而成为带毒的Word系统,继而在打开和创
建任何文档时感染该文档。
感染Normal.dot模板是宏病毒的最常用传染方式。此外,与系统启动相类似,Word在启
动过程中会自动执行C盘根目录下名为Autoexec.dot文档中包含的宏和
<dir>\office\startup\(<dir>是指Word的安装目录)目录内的模板文件所包含的宏,
有些病毒通过这两个“突破口”感染Word系统,使每次启动后的Word都成为带毒环境。
宏病毒的防御
防御宏病毒的根本,在于打开Word文档时先禁止所有自动执行的宏(以Auto开头的宏)
的执行。由于宏病毒的肆虐,微软公司在Word 97版本中提供了此项功能,用户只需将其
打开激活即可。方法是:单击工具菜单下的“选项”,在随后出现的选项卡中选择“常
规”选项卡,用鼠标勾选“宏病毒防护”选项(见图6)这样Word就有了防止“自动宏”
执行的功能,如果打开的文件带有“自动宏”。Word 97将自动弹出宏警告对话框,来让
用户选择是否执行宏(见图7)如果选择了“取消宏”,那么这个Word文档将用只读形式
打开,其内含的所有宏都没有执行。这个方法在理论上能防住所有宏病毒的侵袭,但它
有两个很大的缺陷:一是它拒绝了所有宏的执行,包括正常宏和病毒宏,这会造成某些
文档在打开时出现错误。二是宏病毒防护无法阻止启动Word时Autoexec.dot中的宏和
Normal.dot中的宏的自动执行。也就是说,一旦你的Word被宏病毒感染过了,生成了带
毒的Autoexec.dot或Normal.dot,那么宏病毒防护也就没有任何作用了。基于以上原
因,用户千万不可认为拥有宏病毒防护这一屏障就能高枕无忧了,选择优秀的反病毒软
件才是解决问题的根本。对于还在使用Word 97以前版本的用户来说,根本就没有宏病毒
防护这一武器,在选择反病毒产品时就更要慎重了。
技巧:治疗Word
问题:我的Word被宏病毒感染了,使用Word时常常会出现一些异常情况。我用杀毒软件
将所有带毒的Word文件都处理了一遍,软件提示病毒被顺利杀除了。但是我重新打开它
们时病毒又回来了,而且所有用我的Word制作的文档都带有病毒,我该怎么办?
这是一个常常令电脑用户感到困惑的问题,怎样使被感染的Word系统恢复正常?许多用
户采用的是将Word卸载然后重装的方法,但是有时候问题依旧没有被解决。其实了解了
宏病毒的传染原理后,可以非常轻松地将系统恢复正常。下面我们分步骤详细说明:
退出Word,然后先到C盘跟目录下察看有没有Autoexec.dot文件,如果有这个文件,而你
又不知道它是什么时侯出现的话,请删除它。
找到Normal.dot文件(一般位于<dir>\Templates\目录下,<dir>指的是Office的安装目
录,缺省为C:\Program Files\Microsoft Office目录),然后删除它。不用担心,Word
不会因为找不到Normal.dot而拒绝启动,它会自动重新生成一个干净的没有任何外来宏
的Normal.dot文件。
到目录<dir>\Office\Starup下察看有没有模板文件,如果有而且不是你自己拷贝进去的
话,删除它。
重新启动Word,这时你的Word已经恢复正常了。
检查宏病毒防护是否被启用了,有些病毒(如Jully Killer)会自动将其改为禁用,如
果不启用宏病毒警告功能,你的Word会很快再次被病毒感染的。具体启用方法在宏病毒
防御一节中已经介绍过了。
做完以上五步,你的Word就恢复正常了。只要在使用中不随便让Word执行来路不明的
宏,你就可以一直保持它的"纯净"。
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: hitsat.hit.edu.c]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.352毫秒