Вирусный макрос для excel
Вирусы семейства Macro
Вирусы семейства Macro используют возможности макроязыков, встроенных в системы обработки данных (текстовые редакторы, электронные таблицы и т.д.).
Для существования вирусов в конкретной системе необходимо наличие встроенного в нее макро-языка с возможностями привязки программы на макроязыке к конкретному файлу, копирования макропрограмм из одного файла в другой, получения макропрограммой управления без вмешательства пользователя (автоматические или стандартные макросы).
Данным условиям удовлетворяют редакторы Microsoft Word и AmiPro, а также электронная таблица Excel. Эти системы содержат в себе макроязыки (Word - Word Basic, Excel - Visual Basic), при этом макропрограммы привязаны к конкретному файлу (AmiPro) или находятся внутри файла (Word, Excel), макроязык позволяет копировать файлы (AmiPro) или перемещать макропрограммы в служебные файлы системы (Word, Excel), при работе с файлом при определенных условиях (открытие, закрытие и т.д.) вызываются макропрограммы (если таковые есть), которые определены специальным образом (AmiPro) или имеют стандартные имена (Word, Excel).
Итак, на сегодняшний день известны три системы, для которых существуют вирусы - Microsoft Word, Excel и AmiPro. В них вирусы получают управление при открытии или закрытии зараженного файла, перехватывают стандартные файловые функции и затем заражают файлы, к которым каким-либо образом происходит обращение. По аналогии с MS-DOS можно сказать, что макровирусы являются резидентными - они активны не только в момент открытия/закрытия файла, но и до тех пор, пока активен сам редактор (система).
Вирусы для Microsoft Office'97
Состоит из единственного макроса Frenzy, содержащего автофункцию AutoOpen. Заражает систему при открытии зараженного файла. После чего записывается в документы при их открытии. В зависимости от системной даты и системного случайного счетчика выводит текст
Word97.Frenzy by Pyro [VBB]
Довольно примитивный макровирус для Office 97. Содержит единственный макрос AutoOpen. Заражает систему при открытии инфицированного файла, в документы также записывается при их открытии. Содержит закомментированный текст
Состоит из единственного макроса NightShade, содержащего автофункцию AutoClose, и заражает систему и документы при закрытии файлов. Выключает встроенную защиту от вирусов и разрешает запуск автофункций. В зависимости от текущей даты и системного случайного счетчика выводит текст
Word97.NightShade by Pyro [VBB]
По 13-м субботам устанавливает в документах пароль NightShade.
Вирусы для Microsoft Excel
Заражает электронные таблицы Excel (файлы XLS). Содержит два макроса: Auto_Open и Check_Files. При открытии зараженного файла Excel автоматически выполняет макрос Auto_Open. В вирусе этот макрос содержит всего одну команду, которая определяет макрос Check_Files как выполняемый при активизации любой таблицы (Sheet). Таким образом вирус перехватывает процедуру открытия таблиц и при активировании таблицы зараженный Excel вызывает макрос Check_Files, то есть код вируса.
Получив управление, макрос Check_Files ищет файл PERSONAL.XLS в каталоге запуска Excel (Startup Directory) и проверяет количество модулей в текущем Workbook. Если активным является Workbook с вирусом и файл PERSONAL.XLS не существует (первое заражение), то вирус с помощью команды SaveAs создает в каталоге запуска Excel файл с этим именем. В результате в него записывается код вируса из текущего файла. При очередной загрузке Excel загружает все XLS-файлы из каталога запуска, зараженный файл PERSONAL.XLS также загружается в память, вирус опять получает управление и при открытии таблиц снова будет вызываться макрос Check_Files из PERSONAL.XLS.
Если же количество модулей в текущем Workbook равно 0 (зараженный Workbook не является активным) и файл PERSONAL.XLS уже существует, то вирус переписывает свой код в активный Workbook. После этого активный Workbook становится зараженным.
Проверить систему на наличие вируса несложно. Если вирус уже проник в компьютер, то в каталоге Excel должен присутствовать файл PERSONAL.XLS, в котором видна строка laroux (маленькими буквами). Эта же строка присутствует и в других зараженных файлах.
Макровирус, заражающий файлы Excel. Содержит один модуль (макрос) с именем Legend. Этот модуль включает две процедуры - Auto_Open и INFECT. Auto_Open является процедурой Excel, автоматически вызываемой при открытии файла. При запуске Auto_Open устанавливает вторую процедуру вируса (Infect), как обработчик события SheetActivate, то есть при открытии любой таблицы Excel будет вызывать процедуру Infect.
При вызове процедура Infect заражает либо файл PERSONAL.XLS (когда открыт зараженный файл), либо текущий файл (если он еще не заражен). После заражения вирус удаляет из меню пункт Tools/Macro. Если UserName = "Pyro" и OrganizationName = "VBB", вирус немедленно прекращает работу и не заражает файлов. В зависимости от текущего дня и системного случайного счетчика вирус выводит MessageBox:
You've Been Infected By Legend!
Макровирус, поражающий файлы Excel. Включает два модуля (макроса): COP и ROBO. Модуль ROBO содержит автоматически вызываемую процедуру Auto_Open, которая при открытии зараженного документа записывает код вируса в файл PERSONAL.XLS и устанавливает на код вируса адрес обработчика активизации таблиц (SheetActivate). Затем вирус заражает файлы при открытии таблиц.
1-го марта вирус вставляет в текущую таблицу текст:
ROBOCOP Nightmare Joker [SLAM]
Заражает таблицы Excel. Содержит один модуль (макрос), имя которого состоит из 11 пробелов и поэтому не видно в списке макросов в меню Tools/Macros. Модуль содержит четыре макрофункции: Auto_Open, Auto_Range, Current_Open, Auto_ Close. Все функции вируса в качестве результата возвращают Null.
При открытии зараженного файла срабатывает макрофункция Auto_Open, которая "переименовывает" Excel - в титульной строке вместо надписи Microsoft Excel появляется Microsofa Excel. Если в каталоге Startup Path отсутствует файл BOOK.XLT (система еще не заражена), то на экран выводится сообщение:
Microsoft Excel has detected a corrupted add-in file.Click OK to repair this file.
Независимо от ответа пользователя в каталоге Startup Path создается файл BOOK.XLT, содержащий код вируса. После заражения выводится сообщение
File successfully repaired!
При загрузке Excel автоматически загружает XLT-файлы из Startup Path и, соответственно, активизирует вирус. Вирус назначает на функцию OnSheetActivate свою функцию Auto_Range и при каждой активации таблицы проверяет активный файл на зараженность и, если файл не заражен, заражает его.
Вирус не дает выгрузить себя из Excel - при закрытии каждого файла назначает на функцию OnWindow ту же функцию Auto_Range, то есть повторно активизируется при открытии нового файла.
Состоит из одного модуля (макроса) с именем Exec. Этот модуль содержит три подпрограммы: Auto_Open, DipDing, PayLoad и функцию SheetExists. Подпрограмма Auto_Open автоматически вызывается при открытии зараженного файла - вирус при этом заражает PERSONAL.XLS. В случае любой ошибки вирус записывается во все открытые файлы (книги). Перед возвратом управления Auto_Open устанавливает подпрограмму DipDing на таймер Excel. Эта подпрограмма вызывается начиная с 16:00 и заражает открытые файлы.
Вирус записывает строку Yohimbe в заголовок таблицы. Он также устанавливает таймер на подпрограмму PayLoad - она вызывается в 16:45 и вставляет в текущую таблицу картинку и текст
Что такое макрос?
Для начала немного о терминологии.
Макрос - это код, написанный на встроенном в Excel языке VBA (Visual Basic for Application). Макросы могут создаваться как вручную, так и записываться автоматически с помощью так называемого макрорекодера.
Макрорекодер - это инструмент в Excel, который пошагово записывает все что вы выполняете в Excel и преобразует это в код на языке VBA. Макрорекодер создает очень подробный код (как мы увидим позже), который вы сможете при необходимости отредактировать в дальнейшем.
Записанный макрос можно будет запускать неограниченное количество раз и Excel повторит все записанные шаги. Это означает, что даже если вы ничего не знаете о VBA, вы можете автоматизировать некоторые задачи, просто записав свои шаги и затем повторно использовать их позже.
Теперь давайте погрузимся и посмотрим, как записать макрос в Excel.
Отображение вкладки "Разработчик" в ленте меню
Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку "Разработчик". Для этого выполните следующие шаги:
В результате на ленте меню появится вкладка "Разработчик"
Запись макроса в Excel
Теперь давайте запишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например "Excel".
Вот шаги для записи такого макроса:
- Перейдите на вкладку "Разработчик".
- В группе "Код" нажмите кнопку "Запись макроса". Откроется одноименное диалоговое окно.
- В диалоговом окне "Запись макроса" введите имя для своего макроса, например "ВводТекста". Есть несколько условий именования, которые необходимо соблюдать при назначении макроса. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять имена макросов как одно слово, с разными частями с заглавным первым алфавитом. Вы также можете использовать подчеркивание для разделения двух слов - например, "Ввод_текста".
- Если вы хотите, то можете задать сочетание клавиш. В этом случае мы будем использовать ярлык Ctrl + Shift + N. Помните, что сочетание, которое вы указываете, будет отменять любые существующие горячие клавиши в вашей книге. Например, если вы назначили сочетание Ctrl + S, вы не сможете использовать это для сохранения рабочей книги (вместо этого, каждый раз, когда вы его используете, он выполняет макрос).
- В поле "Сохранить в" убедитесь, что выбрана опция "Эта книга". Этот шаг гарантирует, что макрос является частью рабочей книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
- Введите описание при необходимости. Обычно я этого не делаю, но если у вас много макросов, лучше указать, чтобы в будущем не забыть что делает макрос.
- Нажмите "ОК". Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку "Остановить запись" на вкладке "Разработчик", которая указывает, что выполняется запить макроса.
- Выберите ячейку A2.
- Введите текст "Excel" (или вы можете использовать свое имя).
- Нажмите клавишу Enter. Вы попадете на ячейку A3.
- Нажмите кнопку "Остановить запись" на вкладке "Разработчик".
Поздравляем! Вы только что записали свой первый макрос в Excel. Хотя макрос не делает ничего полезного, но он поможет нам понять как работает макрорекордер в Excel.
Теперь давайте рассмотрим код который записал макрорекодер. Выполните следующие действия, чтобы открыть редактор кода:
- Удалите текст в ячейке A2. Это нужно, чтобы проверить будет ли макрос вставлять текст в ячейку A2 или нет.
- Выберите любую ячейку - кроме A2. Это нужно проверить, выбирает ли макрос ячейку A2 или нет.
- Перейдите на вкладку "Разработчик".
- В группе "Код" нажмите кнопку "Макросы".
- В диалоговом окне "Макрос" щелкните макрос "ВводТекста".
- Нажмите кнопку "Выполнить".
Вы увидите, что как только вы нажмете кнопку "Выполнить", текст "Excel" будет вставлен в ячейку A2 и выбрана ячейка A3. Это происходит за миллисекунды. Но на самом деле макрос последовательно выполнил записанные действия.
Примечание. Вы также можете запустить макрос с помощью сочетания клавиш Ctrl + Shift + N (удерживайте клавиши Ctrl и Shift, а затем нажмите клавишу N). Это тот же самый ярлык, который мы назначили макросу при его записи.
Что записывает макрос?
Теперь перейдем к редактору кода и посмотрим что у нас получилось.
Вот шаги по открытию редактора VB в Excel:
- Перейдите на вкладку "Разработчик".
- В группе "Код" нажмите кнопку "Visual Basic".
Вы также можете использовать комбинацию клавиш Alt + F11 и перейти в редактор кода VBA.
Рассмотрим сам редактор кода. Далее коротко опишем интерфейс редактора.
Когда мы записали макрос "ВводТекста", в редакторе VB произошли следующие вещи:
- Был добавлен новый модуль.
- Макрос был записан с именем, которое мы указали - "ВводТекста"
- В окне кода добавлена новая процедура.
Поэтому, если вы дважды щелкните по модулю (в нашем случае модуль 1), появится окно кода, как показано ниже.
Вот код, который записан макрорекодером:
В VBA, любая строка , которая следует за ' (знак апострофа) не выполняется. Это комментарий, который предназначен только для информационных целей. Если вы удалите первые пять строк этого кода, макрос по-прежнему будет работать.
Теперь давайте пробежим по каждой строке кода и опишем что и зачем.
Код начинается с Sub, за которым следует имя макроса и пустые круглые скобки. Sub - сокращение для подпрограммы. Каждая подпрограмма (также называемая процедурой) в VBA начинается с Sub и заканчивается End Sub.
Надеюсь, что у вас есть некоторое базовое понимание того, как записывать макрос в Excel.
Обращаем внимание, что код, записанный через макрорекордер, как правило, не является эффективным и оптимизированным кодом. Макрорекордер часто добавляет дополнительные ненужные действия. Но это не значит, что не нужно пользоваться макрорекодером. Для тех, кто только изучает VBA , макрорекордер может быть отличным способом проанализировать и понять как все работает в VBA.
Абсолютная и относительная запись макроса
Вы уже знаете про абсолютные и относительные ссылки в Excel? Если вы используете абсолютную ссылку для записи макроса, код VBA всегда будет ссылаться на те же ячейки, которые вы использовали. Например, если вы выберете ячейку A2 и введете текст "Excel", то каждый раз - независимо от того, где вы находитесь на листе и независимо от того, какая ячейка выбрана, ваш код будет вводить текст "Excel" в ячейку A2.
Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязываться к конкретному адресу ячейки. В этом случае программа будет "двигаться" относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1, и вы начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажмите клавишу Enter. Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет перемещаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится на B4, запишет текст "Excel" и затем перейдет к ячейке K5.
Теперь давайте запишем макрос в режиме относительных ссылок:
- Выберите ячейку A1.
- Перейдите на вкладку "Разработчик".
- В группе "Код" нажмите кнопку "Относительные ссылки". Он будет подсвечиваться, указывая, что он включен.
- Нажмите кнопку "Запись макроса".
- В диалоговом окне "Запись макроса" введите имя для своего макроса. Например, имя "ОтносительныеСсылки".
- В опции "Сохранить в" выберите "Эта книга".
- Нажмите "ОК".
- Выберите ячейку A2.
- Введите текст "Excel" (или другой как вам нравится).
- Нажмите клавишу Enter. Курсор переместиться в ячейку A3.
- Нажмите кнопку "Остановить запись" на вкладке "Разработчик".
Макрос в режиме относительных ссылок будет сохранен.
Теперь сделайте следующее.
- Выберите любую ячейку (кроме A1).
- Перейдите на вкладку "Разработчик".
- В группе "Код" нажмите кнопку "Макросы".
- В диалоговом окне "Макрос" кликните на сохраненный макрос "ОтносительныеСсылки".
- Нажмите кнопку "Выполнить".
Как вы заметите, макрос записал текст "Excel" не в ячейки A2. Это произошло, потому что вы записали макрос в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, она войдет в текст Excel - ячейка B4 и в конечном итоге выберет ячейку B5.
Вот код, который записал макрорекодер:
Обратите внимание, что в коде нет ссылок на ячейки B3 или B4. Макрос использует Activecell для ссылки на текущую ячейку и смещение относительно этой ячейки.
Что нельзя сделать с помощью макрорекодера?
Макро-рекордер отлично подходит для вас в Excel и записывает ваши точные шаги, но может вам не подойти, когда вам нужно сделать что-то большее.
- Вы не можете выполнить код без выбора объекта. Например, если вы хотите, чтобы макрос перешел на следующий рабочий лист и выделил все заполненные ячейки в столбце A, не выходя из текущей рабочей таблицы, макрорекодер не сможет этого сделать. В таких случаях вам нужно вручную редактировать код.
- Вы не можете создать пользовательскую функцию с помощью макрорекордера. С помощью VBA вы можете создавать пользовательские функции, которые можно использовать на рабочем листе в качестве обычных функций.
- Вы не можете создавать циклы с помощью макрорекордера. Но можете записать одно действие, а цикл добавить вручную в редакторе кода.
- Вы не можете анализировать условия: вы можете проверить условия в коде с помощью макрорекордера. Если вы пишете код VBA вручную, вы можете использовать операторы IF Then Else для анализа условия и запуска кода, если true (или другой код, если false).
Расширение файлов Excel, которые содержат макросы
Когда вы записываете макрос или вручную записываете код VBA в Excel, вам необходимо сохранить файл с расширением файла с поддержкой макросов (.xlsm).
До Excel 2007 был достаточен один формат файла - .xls. Но с 2007 года .xlsx был представлен как стандартное расширение файла. Файлы, сохраненные как .xlsx, не могут содержать в себе макрос. Поэтому, если у вас есть файл с расширением .xlsx, и вы записываете / записываете макрос и сохраняете его, он будет предупреждать вас о сохранении его в формате с поддержкой макросов и покажет вам следующее диалоговое окно:
Если вы выберете "Нет", Excel сохранить файл в формате с поддержкой макросов. Но если вы нажмете "Да", Excel автоматически удалит весь код из вашей книги и сохранит файл как книгу в формате .xlsx. Поэтому, если в вашей книге есть макрос, вам нужно сохранить его в формате .xlsm, чтобы сохранить этот макрос.
Компью́терный ви́рус — разновидность компьютерных программ или вредоносный код, отличительной особенностью которых является способность к размножению (саморепликация). В дополнение к этому вирусы могут без ведома пользователя выполнять прочие произвольные действия, в том числе наносящие вред пользователю и/или компьютеру.
Даже если автор вируса не программировал вредоносных эффектов, вирус может приводить к сбоям компьютера из-за ошибок, неучтённых тонкостей взаимодействия с операционной системой и другими программами. Кроме того, вирусы обычно занимают некоторое место на накопителях информации и отбирают некоторые другие ресурсы системы. Поэтому вирусы относят к вредоносным программам.
Введение
4
1. Макровирусы
6
1.1 Макровирусы общие сведения
7
1.2 Макровирусы принципы работы
8
2. Постановка задачи
10
3. Обзор наиболее известных вирусов в макросах документов
11
3.1 Распространение макровирусов
13
3.2 Алгоритм работы макровирусов для Microsoft Office
14
4. Способы защиты от вирусов в макросах документов
16
4.1 Обнаружение макровируса
17
4.2 Восстановление пораженных объектов
18
5. Создание вирусов в макросах и их внедрение в файлы документов
19
5.1 Постоянный вывод сообщения на экран
19
5.2 Запуск приложении из макровируса
19
5.3 Автозапуск и выполнение
20
Заключение
21
Список использованной литературы
курсовой ибизи.docx
Процедуры-программы могут исполняться непосредственно или же активироваться по запросу из других макросов. Их синтаксис следующий:
Sub
-> код макроса MicrosoftOffice\Шаблоны\Normal .dot
приWord2003:
C:\Documents and Settings\%имя текущего пользователя%\Application Data\Microsoft\Шаблоны\Normal. dot
Изменяя его номинальный размер с 26624 байта на 39424 байта или 27136 байт на 39936 байт(пояснение: Normal.dot может иметь один из двух указанных номинальных размеров, что зависит от некоторых системных условий) для Word 97 (для Word 2003 значение зараженного файла-шаблона может быть различным, поскольку оригинальный размер данного объекта может существенно варьироваться в зависимости от ряда настроек, установленных в Word'е). Затем вирус омертвляет файл Normal.dot, превращая его в дроппер своей программы ("dropper" - пускатель, активатор): изменяет его содержимое таким образом, что управление передается на вирусный код. Этот код вирус сохраняет в создаваемый им файл saver.dll:
приWord97:
C:\ProgramFiles\ MicrosoftOffice\Office\saver. dll
приWord2003:
C:\ProgramFiles\ MicrosoftOffice\OFFICE11\saver .dll
Данный файл имеет размер 29696 байт и представляет собой модифицированный вирусом файл-шаблон Normal.dot.
после этого заменяет строки, сохраняет документ и закрывает его.
W97M.Ethan - макрокомандный вирус, состоящий всего из одной макрокоманды. Заражает документы приложения Word97 при их закрытии и глобальный шаблон NORMAL.DOT.
Благоприятным фактором распространения вируса W97M.Ethan служит то, что в Microsoft Word макросы автоматически запускаются при открытии любого документа, его закрытии, сохранении и т.д.
Кроме того, имеется так называемый общий шаблон NORMAL.DOT и макросы, помещенные в общий шаблон, автоматически запускаются при открытии любого документа. Если учесть, что копирование макросов из документа в документ (в частности, в общий шаблон) выполняется всего одной командой, то среда Microsoft Word представляется идеальной для существования макрокомандных вирусов подобныхW97M.Ethan
После попадания в систему вирус помещает свою единственную макрокоманду в начало модуля, написанного на языке VBA (Visual Basic for Applications - язык Visual Basic для приложений ) - "ThisDocument". "ThisDocument" является модулем в шаблоне MS Word 97.
При заражении документа или общего шаблона вирус использует временный текстовый файл "C:\Ethan.___" который является источником его вирусного кода. Данному файлу вирус присваивает атрибуты системный и скрытый.
4. Распространение макровирусов
При запуске Word'а Normal.dot передает управление вирусному "файлу-шаблону" saver.dll. Опыты, проведенные с вирусом на тест-машине, дали следующие результаты:
1. Вирус заражает документы при их закрытии: записывает в их макросекцию свой код, используя собственный макрос AutoSave ("Автосохранение"). При этом вирус блокирует стандартный запрос о подтверждении сохранения документа с внесенными в него изменениями, в результате чего все произведенные в документе изменения как вирусом, так и пользователем, автоматически сохраняются без ведома последнего.
2. В том случае, если документ был просто открыт пользователем или редактировался и запоминался через опцию "Сохранить", вирус заражает этот документ; если же последний перезапоминался пользователем через опцию "Сохранить как. ", то вирус заражает только пересохраненный документ, а исходный оставляет без изменения. При этом и в том, и в др. случаях увеличение размера файлов после заражения зависит от ряда условий и не имеет точного значения.
3. Учитывая тот факт, что вирус заражает документы повторно даже просто при их просмотре без внесения пользователем каких-либо изменений, размер файлов постоянно увеличивается, в связи с чем на старых машинах с жесткими дисками небольшого объема свободное место очень быстро уменьшается. Также может наблюдаться сильное торможение машины при работе с Word'ом, что связано с дополнительными затратами ресурсов оперативной памяти на обработку "раздутых" вирусом макросекций зараженных документов и в конечном итоге может стать реальной причиной зависания последних при их открытии.
4. После заражения первого документа на чистой машине вирус создает свой подкаталог:
приWord97:
C:\ProgramFiles\ MicrosoftOffice\Office\Doc_ Copy\
приWord2003:
C:\ProgramFiles\ MicrosoftOffice\OFFICE11\Doc_ Copy\
в который копирует каждый из вновь зараженных документов. Впоследствии, если имя текущего открытого документа, заражаемого вирусом (повторно или первый раз - не имеет значения) совпадает с именем копии документа, уже находящейся в каталоге "Doc_Copy", то вирус, в зависимости от своих внутренних счетчиков, может перезаписать оригинальное содержимое текущего документа содержимым из файла-копии, что влечет безвозвратную потерю содержимого текущего документа.
Также существует вероятность утечки конфиденциальных данных в том случае, если за машиной работает несколько пользователей: например, один из них работает с дискеты с документом, содержащим секретную финансовую или какую-либо др. информацию, которую не должны знать остальные пользователи. Однако после того, как вирус создаст копию данного файла в папке "Doc_Copy", содержимое документа может быть доступно для просмотра др. пользователям данного компьютера.
5. После закрытия Word'а программа вируса автоматически отключается - срабатывает вирусный макрос AutoClose ("Автоматическое закрытие").
4.1 Алгоритм работы макровирусов для Microsoft Office
При выходе из Word глобальные макросы (включая макросы вируса) автоматически записываются в DOT-файл глобальных макросов (обычно таким файлом является NORMAL.DOT). Таким образом, вирус активизируется в тот момент, когда Word грузит глобальные макросы.
Затем вирус переопределяет (или уже содержит в себе) один или несколько стандартных макросов (например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает таким образом команды работы с файлами. При вызове этих команд заражается файл, к которому идет обращение. Для этого вирус конвертирует файл в формат Template (что делает невозможными дальнейшие изменения формата файла, т. е. конвертирование в какой-либо не-Template формат) и записывает в файл свои макросы, включая Auto-макрос.
Возможно также внедрение вируса в файлы, расположенные в каталоге STARTUP. В этом случае Word автоматически подгружает файлы-шаблоны из этого каталога, но такие вирусы пока не встречались.
Рассмотрим вирус, предназначенный для заражения Word-документов. Этот вирус использует служебное имя FileOpen. Процедура FileOpen() выполняется всякий раз, когда пользователь открывает файл и маскируется под обычный диалог Файл->Открыть файл.
InfectorPath = MacroContainer.Path + "\" + MacroContainer.Name
Rem Переменная InfectorPath определяет путь к документу, содержащему вирус.
Rem Имитируется диалог Файл->Открыть файл
For Each VbComponent In ActiveDocument.VBProject. VBComponents
If VbComponent.Name = "Virus" Then Infected = True
Rem Здесь открытый пользователем файл проверяется на наличие вируса
If Not Infected Then
Rem Если файл не заражен, вирус дописывается в файл
CopyMacro ActiveDocument.Path + "\" + ActiveDocument.Name, InfectorPath
Public Sub CopyMacro(NewDestination, NewSource)
On Error GoTo nextline
Application.OrganizerCopy Source:= _
NewSource, Destination:=NewDestination, Name:="Virus", Object:= _
Для автоматизации повторяющихся задач в Microsoft Excel можно быстро записать макрос. Предположим, у вас есть даты в различном формате и вы хотите применить ко всем из них один формат. Это можно сделать с помощью макроса. Вы можете записать макрос, который применяет нужный формат, а затем запускать его при необходимости.
При записи макроса записываются все действия, описанные в Visual Basic для приложений (VBA) коде. Эти действия могут включать ввод текста или чисел, нажатие ячеек или команд на ленте или в меню, форматирование ячеек, строк или столбцов, а также импорт данных из внешнего источника, например Microsoft Access. Приложение Visual Basic (VBA) — это подмножество мощного языка программирования Visual Basic, которое входит в большинство приложений Office. Несмотря на то, что VBA обеспечивает возможность автоматизации процессов между приложениями Office, вам не нужно знать код VBA или программное программирование, если это нужно.
Важно знать, что при записи макроса регистрируются почти все ваши действия. Поэтому если вы допустите ошибку, например нажмете не ту кнопку, средство записи макросов зарегистрирует это действие. В таком случае можно снова записать всю последовательность или изменить код VBA. Поэтому перед записью процесса следует хорошо проработать его. Чем точнее вы запишете последовательность, тем более эффективно будет работать макрос.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки "Разработчик".
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
В поле Имя макроса укажите имя макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш с CTRL+ SHIFT, так как они будут заменять собой совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос. Например, если назначить сочетание клавиш CTRL+Z (Отменить), вы не сможете использовать его для функции "Отменить" в данном экземпляре Excel.
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов . Если выбрать команду Личная книга макросов, Excel создаст скрытую личную книгу макросов (личное. xlsb), если она еще не существует, и сохранит макрос в этой книге.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле "Описание" является необязательным, рекомендуется его заполнить. Кроме того, желательно ввести понятное описание, которое будет полезно вам и всем, кто запускает макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. Кроме того, можно нажать клавиши ALT+F8. При этом откроется диалоговое окно Макрос.
Внимание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
Сведения о параметрах безопасности макросов и их значении.
Макросы можно запускать различными способами, например с помощью сочетания клавиш, графического объекта, панели быстрого доступа, кнопки или даже при открытии книги.
С помощью редактора Visual Basic можно изменять макросы, присоединенные к книге.
Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.
Назначение макроса объекту, фигуре или графическому элементу
На листе щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому нужно назначить существующий макрос, а затем выберите команду назначить макрос.
В поле Назначить макроса выберите макрос, который вы хотите назначить.
Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.
Вы можете назначать макросы формам и элементам ActiveX на листе.
Узнайте, как включать и отключать макросы в файлах Office.
Открытие редактора Visual Basic
Нажмите клавиши ALT+F11.
Узнайте, как найти справку по элементам Visual Basic.
С помощью редактора Visual Basic (VBE) вы можете добавлять в записанный код собственные переменные, управляющие структуры и другие элементы, которые не поддерживает средство записи макросов. Так как средство записи макросов фиксирует почти каждый шаг, выполняемый во время записи, может также потребоваться удалить ненужный код. Просмотр записанного кода — отличный способ научиться программировать на VBA или отточить свои навыки.
Пример изменения записанного кода можно найти в статье Начало работы с VBA в Excel.
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее.
Перейдите в раздел настройки > Excel . Панель инструментов & > ленты.
В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик нажмите кнопку Запись макроса.
В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов. Если выбрать команду Личная книга макросов, в Excel будет создана скрытая личная книга макросов (личное. XLSB), если он еще не существует, и сохранение макроса в этой книге. Книги в этой папке открываются автоматически при запуске Excel, а код, хранящийся в личной книге макросов, будет указан в диалоговом окне Макрос, которое описано в следующем разделе.
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш, которые еще не назначены другим командам, так как они будут переопределять совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле "Описание" является необязательным, рекомендуется его заполнить. Полезно ввести понятное описание с любой полезной информацией, которая может быть полезна Вам или другим пользователям, которые будут запускать макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке Разработчик щелкните Остановить запись.
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. При этом откроется диалоговое окно Макрос.
Примечание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
Узнайте, как включать и отключать макросы в Excel для Mac.
Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.
Назначение макроса объекту, фигуре или графическому элементу
На листе щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому нужно назначить существующий макрос, а затем выберите команду назначить макрос.
В поле Назначить макроса выберите макрос, который вы хотите назначить.
Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.
Вы можете назначать макросы формам и элементам ActiveX на листе.
Открытие редактора Visual Basic
На вкладке Разработчик щелкните Visual Basic или выберите Сервис > Макрос > Редактор Visual Basic.
Узнайте, как найти справку по элементам Visual Basic.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
Читайте также: