TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

6.4.2. Программа AntiVir

Итак, мы рассмотрели способ, позволяющий придать вновь создаваемой программе свойства самоконтроля. А как быть с СОМ—файлами или защитить громоздкую программу? Кроме того, существуют вирусы, которые поражают не файлы, а загрузочные секторы дисков. Для таких вирусов (их называют загрузочными) контроль PSP может оказаться неэффективным. Одним из возможных способов решения задачи является разработка специальной программы, которая проверяет первый сектор наиболее важных ЕХЕ и СОМ— файлов при каждом включении ПК. Эта же программа может проверить главный загрузочный сектор или даже все загрузочные секторы на всех дисках, чтобы убедиться в отсутствии загрузочных вирусов, а при их обнаружении удалить их.

Мною разработана программа AntiVir (прил.П9.1), реализующая описанные функции. Эта программа создает и поддерживает архив загрузочных секторов и секторов PSP. Она может работать в двух режимах — автоматическом и диалоговом.

В автоматическом режиме AntiVir проверяет текущее состояние загрузочных секторов и первых секторов для заданных файлов и сравнивает их с эталонными копиями, хранящимися в архиве. В случае обнаружения отличий программа сообщает пользователю об этом и предлагает восстановить эталонное состояние соответствующих секторов.

В диалоговом режиме программа предоставляет пользователю возможность просмотреть и скорректировать список проверяемых файлов. Диалоговая часть реализована с помощью объектно—ориентированной библиотеки Turbo Vision. Выбор нужного режима осуществляется автоматически: если программа вызывается командой ДОС

ANTIVIR она переходит к диалогу с пользователем, если командой

ANTIVIR /AUTO

реализуется режим автоматического контроля.

При контроле загрузочных секторов программа использует меры, позволяющие ей обнаруживать так называемые вирусы—невидимки. Такие вирусы контролируют обращение к функциям и прерываниям ДОС, а также к прерыванию $13 BIOS и при попытке чтения зараженного вирусом участка диска «подсовывают» программе сохраненную вирусом копию незараженного участка. Единственным способом обнаружения таких вирусов является непосредственное обращение к контроллеру диска или прямой вызов прерывания $13 в постоянной памяти BIOS. Поскольку BIOS обычно учитывает особенности конкретного контроллера диска, второй путь будет более простым, однако для его реализации необходимо каким—то образом определить начало в BIOS программы, обрабатывающей прерывание $13 (сразу после загрузки ДОС вектор $13 перехватывается программами IBMIO.COM и показывает на резидентную в оперативной памяти часть ДОС). Для определения «чистого» вектора

$13 в программе используется мультиплексное прерывание $2F, которое для подфункции $13 возвращает в регистрах DS:DX требуемый адрес. Поскольку при этом прежнее содержимое регистров DS:DX автоматически помещается в вектор $13, это прерывание необходимо вызывать дважды подряд с промежуточным запоминанием регистров DS:DX в стеке (см. процедуру Bv.ild.Arch в программе ANTIVIR). В ходе контроля загрузочных секторов программа переназначает обычно пустующий вектор $62 так, чтобы он указывал на вход в обработчик $13, и использует затем этот вектор для скрытого от вируса чтения секторов жесткого диска. К сожалению этот прием нельзя использовать для контроля архивных файлов, так как в последнее время широкое распространение получили программы динамического сжатия/раскрытия информации (самыми популярными из таких программ являются Double Space и Stacker). Контроль динамически сжатых дисков непосредственным чтением секторов невозможен, так как в этом случае отключается не только возможный вирус, но и резидентная программа—деархиватор. В результате не удается найти начальный сектор защищаемого файла и проверить PSP программы.

 Глава 6

Оглавление

 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz