Соглашение | Публикация статей

Модуль F_Anti
Категория: Статьи

В этом параграфе описывается модуль F_Anti, в котором осуществляются все необходимые действия по установке ключа во вновь создаваемый ЕХЕ-файл и последующей проверке этого ключа при каждой загрузке программы. Полный текст модуля см. прил.П7.
В качестве ключа для контроля факта заражения ЕХЕ-файла в модуле F_Anti используется типизированная константа Head, соответствующая такой структуре данных:

Type
НТуре = record
НЕ : HeadExeType; {Эталонный заголовок файла}
HL : Longint; {Эталонная длина файла}
HF : Boolean; {Флаг установки ключа}
Key: Word ; {Шифр для защиты ключа}
End;

При создании этой типизированной константы компилятор в поле HF по¬мещает значение False. Запущенная программа анализирует это поле. При первом прогоне HF = False, в результате чего программа вызывает процедуру Save, в ходе выполнения которой в файле сохраняются эталонный заголовок и начальная длина файла. При этом одновременно в поле HF (в файле програм¬мы!) помещается значение True, поэтому при любом последующем запуске программы вместо Save будет вызвана процедура CheckFile, которая осуществит нужный контроль файла. Если в ходе контроля обнаруживается хотя бы ма¬лейшее отличие заголовка файла от его эталона, хранящегося в Head, про¬грамма сообщает о факте заражения и предлагает восстановить испорченный заголовок и начальную длину файла.
При восстановлении зараженного файла осуществляются следующие действия:
• зараженный файл копируется в файл с расширением VIR-это позволит Вам в случае неудачной попытки восстановления повторить ее еще раз; кроме того, при желании Вы сможете передать разработчикам антиви¬русных программ копию вируса для выработки методов его обнаружения и уничтожения;
• анализируется адрес запуска зараженной программы: если относительное значение сегмента точки запуска у зараженной программы меньше, чем в эталоне, то это означает, что вирус располагается в начале или в середине.
Если программа запускается на уже зараженном ПК. Не исключено, что заголовок файла будет испорчен вирусом, и тогда система защиты будет ревностно следить за сохранностью вируса! В этом случае программа предупреждает пользователя о невозможности восстановления (если Вас заинтересовал описываемый способ борьбы с вирусами, попробуйте модифицировать программу защиты так, чтобы она работала и в этом случае);
• если вирус пристыкован в конец файла, то в восстанавливаемый файл переносится эталонный заголовок и незараженная часть, начиная с байта TablOff + ReloCnt'4 от начала файла и до байта FileSize-HL Отмечу следующее обстоятельство. Описанная система защиты дублирует заголовок файла в тело программы. Ничто не мешает вирусу проверить тело программы на наличие дубликата и соответствующим образом изменить его. Я далек от мысли, что Вы,, уважаемый читатель, после знакомства с этим разделом захотите создать собственный вирус, учитывающий это обстоятельство. Тем не менее, я считаю, что нелишней будет какая-то защита самого ключа. Такая защита реализуется очень просто: для этого достаточно все 16—битные поля эталона заголовка сложить по модулю 2 со случайной константой Key, С этой целью в процедуру Save помещен следующий фрагмент (см. текст модуля в прил. П7):

{Зашифровать ключ:} Randomize; Head.Key: = Random ($FFFF);
With Head,
Head .HE do for k = I to 14 do
Hem [k]: = HE. Hem [k] xor Key;
(массив Hem совмещен в памяти с сохраняемым в файле эталонным заголов¬ком, а НЕ. Нет-с заголовком файла в момент первого запуска).
Инициация генератора случайных чисел с помощью процедуры Randomize гарантирует, что шифр Head.Key не будет повторяться в различных програм¬мах. В процедуре CheckFile с помощью операторов
{Дешифровать ключ: }
With Н,Н.НЕ do for k := I to 14 do Hem[k] := Hem[k] xor Key;
восстанавливается исходный вид ключа.

Процедура CheckFile, осуществляющая установку или контроль ключа, вызывается в ходе выполнения установочной части модуля F_Anti, поэтому для использования описанного метода защиты достаточно указать имя модуля в предложении Uses. Замечу, что в случае разработки программы с оверлеями модуль F_Anti можно объявить оверлейным, если в установочной части любого не оверлейного модуля инициируется работа администратора оверлея.
В распоряжении программиста имеется глобальная переменная CheckVirasResult, сигнализирующая о результатах проверки программы. Зна¬чения этой переменной интерпретируются следующим образом:

0; {Не обнаружен факт заражения} 1; {Первый запуск, в программе установлена защита}
-1; {Вирус обезврежен с согласия пользователя}
-2; {Вирус обезврежен автоматически} .
-3; {Контроль подавлен ключом /NOANTI}
-4; {Вирус расположен в начале программы}
Работа процедуры CheckFile может быть подавлена, если программа запускается с ключом /NOANTI. Ключ /NOQUERY разрешает автоматическое удаление обнаруженного вируса без разрешения пользователя.
Ключ /NOALARM также разрешает процедуре автоматически удалить вирус, но за¬прещает выдавать на экран предупреждающее сообщение. Наконец, ключ /NOCOPY запрещает создание резервной копии зараженного файла (с расширением VIR).
Следующая простая программа иллюстрирует технику использования модуля F-Anti. Если Вы скомпилируете эту программу в файл testanti.exe, то после команды testate на экране появится сообщение
Установлена защита файла TESTANII.EXE. при первом запуске программы и В файле TESTANTI.EXE вирус не обнаружен.
при каждом следующем запуске. Если запустить программу командой
Testate /noanti на экран будет выведено сообщение Контроль блокирован ключом /NOANTI.
Uses FAnti; begin
Case CheckVirusResuit of
0: WriteLn(‘B файле ', ParamStr (0),' вирус не обнаружен.*);
1: WriteLn ('Установлена защита файла ', aramStr (0) ,*.*);
-1: WriteLn ('Вирус удален с разрешения пользователя.');
-2: WriteLn ('Вирус удален автоматически.');
-3: WriteLn С Контроль блокирован ключом /NOANTI.*);
-4: WriteLn С Вирус расположен в начале *+
' файла - удаление невозможно.')
End
end.


Статьи по теме:

World Wide Web в России
Сети
Эрг-упражнения для улучшения осанки
Кибернетический подход
Поиск людей (Кто есть Who)
Отличительные особенности. Экспертные системы первого и второго поколения
Разработка и распространение компьютерных вирусов
Представляя счет медицинское програмное обеспечение - разрешение для медицинских центров
Разновидности: Atree ADA, Janus ADA, Meridian ADA
Некоторые характеристики ПЛАТЕЖНОЙ СИСТЕМЫ
Обзор возможностей WinRAR 3.70 RU Final
Языки описания сценариев на подъеме
Сигналы в системе UNIX
Угрозы Безопасности Современных Сетей
Устройство и общие принципы работы компьютерного томографа
Маркировка + контроль вскрытия с этикетками В-367
Восстановление Windows
Описание построения требуемых графиков и диаграмм
Блок питания
Государственные дотации
Где Купить Картридж С Доставкой В Офис
Узнайте правду о ваших малышах занимаясь серфингом привычки
Анимация На Рабочем Столе Вашего Компьютера
Windows Vista как платформа
Глобальные гипертекстовые структуры: WWW
Языки описания сценариев
Интерфейс глобальных сетей
Сетевая этика
Периферійні пристрої
Электронные вычислительные машины (ЭВМ)
Формат Магнитной Записи Lto (Linear Tape Open)
Команды консоли восстановления
Какое сжатие файлов лучшее?
Деловые игры
Автоматическая очистка Рабочего стола
Сравнение темпов развития ЭВМ с темпами эволюции человека
Hесанкционированный доступ к информации, хранящейся в компьютере
Структура конструкций и поколения ЭВМ
Интерфейс, селекторный и мультиплексный каналы
Типизация
Выбор системы защиты
Технология Gigabit Ethernet
Основы работы в среде Microsoft Windows XP
Почтовые псевдонимы
ЭЛЕКТРОСТАТИЧЕСКИЕ ПЛОТТЕРЫ
Обмен данными путем перетаскивания
Устройство Netping Cooler Board Поступило На Склад Компании Зао «Лайт Коммуникейшн»
Метод простой итерации
Изменение формата графического файла
Plasma monitors
Защита данных. Роскошь или средство выживания?
Graycatsoft - Сайт Программного Обеспечения
Рынок электронной коммерции: сегодня и завтра
Уход За Домашним Компьютером
Краткий обзор модулей COSMOS/M