LINKS

 

 

[回首页]

Word宏病毒的预防和清除



编者按:如今,电脑玩家最惧怕的一件事情不是主板升级,而是病
毒,几乎到"谈毒色变"的程度。好好的一段文档,被病毒感染后变成"
大花脸",好不懊丧! 该文旨在解决你的一些后顾之忧。Word宏病毒在
病毒大家庭中出现较晚,但其传播速度和危害毫不逊色于其他传统病
毒,并出现了所谓的病毒生产机,在技术上也逐步采用常规文件型病毒
使用的加密变换(Mutati on)、多态变形(Polonorphsin)等手法。
与传统的文件型病毒不同,Word宏病毒具有一些新的特点:
(1)病毒代码具有开放性,使得很容易被改编为新的宏病毒变种(
或许这是病毒制造者故意这样做的);
(2)它是一种真正跨硬件平台的病毒,在PC机上的感染后的文件,
在Macintosh机上打开后,病毒就可借助文件数据格式的一致性在Maci
ntosh机上传播,并对系统进行破坏。不过这种病毒只能在某种特定的
版本上或与之数据格式相同的版本中传染,否则,病毒只是一些乱字符
,并无破坏能力。

一、常见的宏病毒发作症状
国际上已见报道的Word宏病毒已达120多种,国内已流行的宏病毒
也有十多种,下面就常见的宏病毒及其症状叙述如下。
有些宏病毒只进行自身的传播,并不具破坏性,如较常见的一种Au
toopen宏病毒,这种病毒只是将文档保存为模板,并进行自身复制,当
打开带病毒的文档时,将自身传染给Word的No rmal.dot模板,然后再
传染给干净的文档。宏病毒基本上都是按这种方法进行传染的。
有些病毒对用户进行骚扰,但不破坏系统,如在每月的13日有一种
台湾产的"台湾No.1"宏病毒发作,该病毒在每月的13日发作。发作时,
给出一5个数字连乘的心算数学题,并警告"若你答错,只好接受震撼教
育……"。其实该病毒只是将自身传染给模板文件"normal.dot"和其
他文档。然后告诉你它是"巨集病毒",并新建20个文档(这种病毒中的
对话框提示的汉字是B IG5码,如果你的Windows的中文系统是GB码,你
会看到一堆混乱的字符)。Helper病毒每月10 日发作,该病毒藏身于A
utoclose宏中,感染后的文件在关闭时被添加一密码—"help",如果你
的Word文档在每月10日之后突然发现莫名其妙地向您问密码,那么可
以试一试"help",以确定是不是Helper病毒,另外Aliance(每月2、7、
11、12日发作)、Phardera等属此类。
有些宏病毒或使打印中途中断或打印出混乱信息,如Nuclear、Ko
mpu等属此类。有些宏病毒将文档中的部分字符、文本进行替换,如Co
ncept.F发作时,用",","e ","not"替换所有".","a","and"。
有些病毒极具破坏性,如MDMA.A(无政府者一号,最早发现于1996
年夏),这种病毒既感染中文版Word,又感染英文版Word,发作时间是每
月的1日,此病毒在不同的Windows平台上有不同的破坏性表现:在3.x
版Windows上发作时,在机器的自动批处理文件autoexec.bat中加入"
deltree/yc:",机器在下一次启动后将自动删除C盘上的所有文件;在W
indows 95平台上删除Windows目录下的帮助文件(*.hlp)和控制面板
文件(*.cpl);在Windows NT平台上删除当前目录下的所有文件;在Mac
intosh机上删除所有文件。发作后会显示"You are infected with M
DMA-DMY,Brought to you by MDMA(Many Delinquent Modern Anerch
ists)",告诉你的Wor d系统已被病毒感染,是一群无政府主义者干的

MDMA C是MDMA A的一个著名变种,其发作日期随系统平台不同而
各异,Macintosh机上每月5日发作,Windows 3.x/95/NT上每月20日后
发作,它不再显示任何对话框,并改变了病毒的日期触发机制,破坏性
更强,Concept.L等病毒也是这种极具破坏性的病毒;
另外有一种双栖复合型病毒,如Nuclear是由AutoExec、Dropsuri
v、Fileexit等9种宏病毒复合成的一种DOS和Windows双栖型驻留宏病
毒。Nuclear发作时将一名为ph33r的病毒传染到计算机上并激活,清
除机器的MSDOS.SYS、IO.SYS和COMMAND.COM文件,使计算机瘫痪,这种
病毒在每年的4月5日发作。

二、病毒的检查、清除与预防
检查、清除及预防此病毒有几种方法。

1.预防
(1)保护Word模板文件
将常用的模板文件改为只读属性,可防止Word系统被感染,DOS的a
utoexec.bat和config .sys文件最好也都设为只读属性文件。
(2)屏蔽自动执行宏
宏病毒是通过自动执行宏的方式来激活、进行传染破坏的,所以
将自动执行宏屏蔽掉,W ord就不会执行自动执行宏。文档中或Word系
统即使有宏病毒存在,但无法被激活,也无法发作传染、破坏,起到了
防毒的效果。这种方法安全、简单、易行。具体方法有以下两种。
①在Normal.dot中编写名为"AutoExec"的自动执行宏,内容为:Di
sableAutoMacros
②也可以使用下面命令行来使所有自动宏无效(包括AutoExec):
winword.exe/mDisableAutoMacros
最好使用第二种方法,因为有些病毒可能藏身于AutoExec宏中,在
Word打开时就被激活。
2.检查与清除
(1)用宏管理器检查并清除
经常检查在常用的模板文件(如"normal.dot")中是否存在名为"A
utoOpen"、"AutoNew" 、"AutoExec"、"AutoClose"、"AutoExit"的
宏,如有,则删除掉。保持Word系统的干净。在每次打开Word文档之前
,也要检查文档中是否有该宏病毒,如有,则删除。
检查的办法是:选取"工具"菜单中"宏"一项(在没有激活文档时,
在"文件"菜单中)。进入"管理器",选取标题为"宏"的一页,在"宏有效
范围"下拉列表框中打开要检查的文档。这时在上面的列表框中就会
出现该文档模板中所含的宏,如有其他不明来源的自动执行宏,删除即
可,然后关闭管理器,根据提示保存改变的文档。
这样比较麻烦,但能够保证将病毒彻底清除。
(2)应用WordBasic编写宏检查并清除
在模板"normal.dot"中编写名字为"AntiMacrovir"的宏。自动检
查所有指定路径下的W ord文档,删除所有可能的病毒,程序源代码见
附文后程序。其原理是利用检查normal.dot模板和当前激活Word文档
中是否存在自动执行宏,如有删除之。
这一程序可清除文档和系统中所有的宏病毒。由于时间关系,未
能仔细研究找出一种在打开文档时在病毒激活执行之前自动对其进行
检测的方法,敬请有兴趣的计算机爱好者对程序加以改进。
(3)专业杀毒软件
目前已有几家杀毒软件公司相继推出了可安全检查和清除某些Wo
rd宏病毒的工具软件, 如华美星际公司推出的"病毒克星for Word "1
6.0,它可以清除Nuclear,Concept,Taiwan No .1等十几种Word宏病毒
;瑞星公司推出的RAV 6.0能处理多种Word宏病毒;微软公司也推出清
除其宏病毒的软件Microsoft MVTools;北京江民新技术公司推出的KV
300H版则可处理Conce pt,Bandung Taiwan No.1等6种Word宏病毒;另
外还有冰岛的f-prot可清除英文版的Word宏病毒等等。
当然,这些杀毒工具软件也只能对已知的宏病毒进行检查和清除,
对于新出现的病毒或病毒的变种则可能不能正常地清除,或者将会破
坏文件的完整性,所以,对于怀疑有病毒的文件在利用软件清除之前,
最好做一备份以防万一,在使用DOS下的杀毒软件时尤其应小心。
另外,对于DOS和Windows双栖复合型病毒,除了清除Word系统和文
档的宏病毒外,还应清除其产生的DOS下的病毒。

三、结束语
宏病毒制造者巧妙地利用了Word的自动执行宏,在每次打开、关
闭或新建文档时进行复制传染。文档被保存为模板,长度变大,不能被
存为其他格式的文档。
经常检查模板文件中是否有可疑的宏存在,当有文档的交换时,在
文档打开之前也应检查其中是否含有可疑的宏。如果文档被保存为模
板类型,或经常莫名其妙地存盘,就应检查是否有宏病毒存在。
宏病毒近期内得以迅速传播,很大的一个原因是广大计算机用户
对宏病毒的传染机制还不太了解。其来势汹汹,但并不可怕,只要提高
警惕,加强防范,是完全可以避免的。
清除病毒的WordBasic宏Antimac_vir的源程序
用于检查与清除宏病毒(待改进)
Macro VirusExist=0
active=CountMacros(1)
For I=1 To active
Select Case LCase$(MacroName$(i,1))
Case"AutoOpen"
Case"AutoSave"
Case"AutoExec"
Case"AutoNew"
Case"AutoClose"
Macro VirusExist=-1
Next I
如果发现病毒存在,提示。
if MacroVirusExist
msg$="本文件可能被Word宏病毒感染!"
msg$=msg$+Chr$(13)+Chr$(13)+"确认将所有的自动执行宏清除!
"
ret=MsgBox(msg$,"注意!",1)
if ret=0
Organizer. Delete,.Source=FileName$(),.Name=MacroNam
e$(i,1),.Tab=3
Organizer. Delete,.Source=DefaultDir$(15)+"\normal.d
ot",.Name=MacroName $(i,1),.Tab=3
EndIf
End If
End Sub

(,2000-11-02)