Защита программ от компьютерных вирусов 167

Работа процедуры CheckFile может быть подавлена, если программа запускается с ключом /NOANTI. Ключ /NOQUERY разрешает автоматическое удаление обнаруженного вируса без разрешения пользователя. Ключ /NOALARM также разрешает процедуре автоматически удалить вирус, но запрещает выдавать на экран предупреждающее сообщение. Наконец, ключ /NOCOPY запрещает создание резервной копии зараженного файла (с расширением VIR).

Следующая простая программа иллюстрирует технику использования модуля F_Anti. Если Вы скомпилируете эту программу в файл testanti.exe, то после команды

testanti на экране появится сообщение

Установлена защита файла TESTANTI.EXE. при первом запуске программы и

В файле TESTANTI.EXE вирус не обнаружен.

при каждом следующем запуске.

Если запустить программу командой

testanti /noanti на экран будет выведено сообщение

Контроль блокирован ключом /NOANTI.

Uses F_Anti;

begin

case CheckVirusResult of

0 WriteLn('B файле ',ParamStr(0),' вирус не обнаружен.');

1 WriteLn('Установлена защита файла ',aramStr(0),'.');

-1 WriteLn('Вирус удален с разрешения пользователя.');

-2 WriteLn('Вирус удален автоматически.');

-3 WriteLn('Контроль блокирован ключом /NOANTI.')?

-4 WriteLn('Вирус расположен в начале '+

'файла - удаление невозможно.') end end.

6.4. ЗАЩИТА СУЩЕСТВУЮЩИХ ЕХЕ-ФАЙЛОВ

Итак, «вакцинация» вновь разрабатываемых программ не представляет особой сложности. А как защитить уже существующую ЕХЕ— программу? Для этого существуют две возможности: либо использовать отдельную программу, которая хранит ключевую информацию и осуществляет проверку по требованию пользователя (такая программа обсуждается в следующем разделе), либо пристыковать к защищаемой программе небольшой код «вирусного фага» — тогда проверка будет осуществляться автоматически при каждом запуске программы. В этом разделе мы обсудим технику создания и внедрения в защищаемую программу антивируса—фага, т.е. небольшой ассемблерной про—