Создаем вирус и антивирус (Гульев) - страница 34

Как известно, в последнее время большое распространение получили макро-вирусы. По сведениям из различных источников, на эти вирусы приходится от 70 до 80 процентов заражений. Изложенный ниже материал поможет разобраться в вирусах этого типа.

Инструментарий

Для изучения макро-вирусов понадобится некоторое программное обеспечение. В качестве «полигона» необходим MS-WORD версии 6.0 или выше. Для изучения зашифрованных макросов может пригодиться дизассемблер макросов (автор AURODREPH из VBB). Для более полного понимания всего изложенного ниже желательно иметь базовые знания о WORD BASIC.

Чтобы обезопасить рабочие файлы от плодов экспериментов, настоятельно рекомендуется создать резервную копию шаблона NORMAL. DOT в каталоге WINWORD6\TEMPLATE, так как именно этот документ обычно заражается макро-вирусом. Когда все готово, самое время перейти к основам макро-вирусов.

Общие сведения

Макрос – это программа, написанная на некотором языке, которая используется обычно для автоматизации определенных процессов внутри приложений. В данном случае разговор пойдет о языках Visual Basic for Applications (VBA) и WordBasic (WB), которые Microsoft использует в своих программах (в частности, Excel, Project и PowerPoint используют VBA, а WinWord – WB).

Далее будем считать стандартным языком VBA, так как он представляет собой попытку унифицировать макроязык, сделать его общим для всех программ Microsoft. Несмотря на то, что WB имеет некоторые отличия, в том числе и в синтаксисе, структура кода этих языков похожа. При необходимости будет особо отмечено, что речь идет о WB. Макрос VBA – это вызываемые процедуры. Они бывают двух типов: процедуры-подпрограммы и процедуры-функции.

Процедуры-подпрограммы могут исполняться непосредственно или вызываться из других макросов. Синтаксис их следующий:

Sub <Имя_Макроса>

−> код макроса <−

’Комментарий начинается с апострофа

End Sub

Пример:

’Данный макрос открывает диалоговое окно и выводит сообщение

Sub Stupid_Greeting

MsgBox ”Hello World!”

End Sub

Процедуры-функции (также называемые просто функциями) возвращают значение, которое может быть передано в качестве параметра другой процедуре. Их синтаксис:

Function <Имя_Функции>(Аргументы)

−> Инструкции <−

’Комментарий

End Function

Пример:

’Суммирует параметры a и b и возвращает

’результат в переменную ”AddAB”

Function AddAB(a,b)

AddAB=a+b

End Function

Конечно, в документ можно вставить столько макросов, сколько нужно (или сколько хочется), ограничений на их количество нет. Набор макросов (процедур-подпрограмм и процедур-функций), составляющих документ, называется модулем VBA.