Истории о вирусах

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



' Данный макрос открывает диалоговое окно и выводит сообщение
Sub Stupid_Greeting
MsgBox "Hello World!"
End Sub
Процедуры-функции (также называемые просто функциями) возвраща-

ют значение, которое может быть передано в качестве параметра другой

процедуре. Их синтаксис:
Function <Имя_Функции>(Аргументы)

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

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

End Function





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

'результат в переменную "AddAB"

Function AddAB(a.b)

AddAB=a+b

End Function
Конечно, в документ можно вставить столько макросов, сколько нужно

(или сколько хочется), ограничений на их количество нет. Набор мак-

росов (процедур-подпрограмм и процедур-функций), составляющих до-

кумент, называется модулем VBA.
Язык VBA работает также с объектами (внутри модулей VBA можно

делать ссылки на документы, графику). Объекты обладают свойствами.

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

турного типа, VBA имеет типичные конструкции:
цикл "For-next":
Sub Counter "Процедура
lnfect_Num=0
For Count=1 to 10 'Цикл от 1 до 10
lnfect_Num=lnfect_Num+Count
Next Count
MsgBox "Достигли максимального количества заражений"
End Sub
4-1436
условие "If-then":
Sub lnfect_Check
If lnfect_Num=0 Then MsgBox "Файл не заражен"
End Sub
конструкция "With-end with" (используется для работы с несколькими

свойствами конкретного объекта):
Sub ChangeProperties

With Selection

.Font.Bold=True
.Font.Colorlndex=3 'красный цвет

End With

End Sub
селектор "Select case-end case":
Sub CheckJnfection
Select Case lnfect_Num
Case 0
MsgBox "Файл не заражен"
Case is > О
MsgBox "Файл заражен"
Case is < О
lnfect_Num=0
End Case
End Sub
Полезным инструментом для работы с VBA является окно отладки.

В нем можно трассировать код, вносить в него изменения и делать мно-

гое другое. В процессе отладки для остановки на некоторое время ис-

полнения кода используются флаги. Чтобы можно было анализировать

содержимое конкретных переменных и/или инструкций, после каждой

команды выводятся сообщения (в отладчике VBA для прерывания ис-

полнения кода можно ставить также контрольные точки).
Нужно обратить внимание на разнообразные аргументы функций.

Как уже говорилось, структура их следующая:


Function <Имя>(Аргументы)
[.]

End Function
Аргументами могут быть константы, переменные или выражения.

Процедуры могут быть и без аргументов.
Function Get_Name()

Name=Application.UserName

End Function
Некоторые функции всегда требуют фиксированное число аргументов

(до 60). Другие функции имеют несколько обязательных аргументов,

а остальные могут отсутствовать.
После того, как основы VBA стали понятны, идем дальше. Итак, виру-

сы и "троянцы" на VBA.
Язык VBA универсален, и тому есть две причины. Во-первых, этот язык

прост в изучении и использовании, поскольку он является языком ви-

зуального программирования, он ориентирован на события, а не на

объекты. С его помощью без особых затрат времени очень легко созда-

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

ство предопределенных функций, облегчающих работу. В третьих, име-

ются функции (или макросы) автоматического выполнения, что

позволяет упростить написание процедур автокопирования, занесения

в память и прочих используемых стандартными DOS-вирусами.
Помимо этого, преимуществом VBA является свойство переносимости.

VBA работает под Win З.х, Win95, WinNT, MacOS и так далее, то есть

в любой операционной системе, где можно запустить приложения его

поддерживающие.
VBA представляет собой язык, адаптированный к языку приложения,

из-под которого он запущен. Это означает, что если на компьютере ус-

тановлена, например, испанская версия WinWord, то имена предопреде-

ленных функций будут также на испанском. Так что два следующих

макроса - вовсе не одно и то же.

Содержание раздела