Загрузочные вирусы. Подавляющее большинство резидентных загрузочных вирусов для выделения системной памяти для своей резидентной копии использует один и тот же прием: они

Подавляющее большинство резидентных загрузочных вирусов для выделения системной памяти для своей резидентной копии использует один и тот же прием: они уменьшают объем DOS-памяти (слово по адресу 0040:0013) и копируют свой код в "отрезанный" блок памяти. Объем DOS-памяти обычно уменьшается на единицу (1 Кб) в случае коротких загрузочных вирусов, код которых занимает один сектор дискового пространства (512 байт). Вторая половина килобайта используется такими вирусами, как буфер чтения-записи при заражении дисков. Если же размер вируса больше 1 Кб, он использует нестандартные методы заражения, требующие большего объема буфера чтения-записи. Соответственно объем памяти уменьшается на несколько килобайтов (среди известных вирусов максимальное значение у вируса RDA.Fighter - 30 Кб).

В дальнейшем некоторые вирусы "ждут" загрузки DOS и восстанавливают первоначальное значение объема системной памяти. В результате они оказываются расположенными не за пределами DOS, а как отдельный блок DOS-памяти. Некоторые загрузочные вирусы вообще не используют и не изменяют значение объема системной памяти. Они копируют себя в какую-либо область памяти, не используемую вплоть до загрузки DOS, ждут загрузки DOS и затем инсталлируют свой код в системе всеми возможными в DOS способами.

Эти вирусы используют несколько способов перехвата момента загрузки DOS. Наиболее популярный способ — проверка значения INT 21h (прерывание DOS-функций). Если это значение изменилось, вирусы считают, что инсталляция DOS завершена. Проверка значения INT 21h проводится при вызовах INT 8, ICh (для этого вирусы помимо прерываний обращения к дискам перехватывают также прерывания таймера) или при вызовах INT 13h. Менее популярный способ — проверка данных, считываемых с диска (для этого требуется только перехват INT 13h). Если буфер чтения содержит заголовок ЕХЕ-файла, вирусы считают, что загрузка DOS завершена, поскольку в память для выполнения загружается ЕХЕ-файл.

Для того чтобы перехватить обращения к дискам, большинство загрузочных вирусов перехватывают INT 13h — основное прерывание для работы с дисками. Реже используется перехват INT 40h — прерывание для работы с гибкими дисками. Еще реже используются различные экзотические способы перехвата прерываний BIOS и DOS, возникающих при работе с дискетами.

В случае перехвата INT 13h/40h вирусы обрабатывают команды чтения-записи секторов (АН=2,3), проверяют диск на зараженность и записывают в его загрузочный сектор или в MBR винчестера свой код. Реже перехватываются другие команды — от команды Reset Disk (AH=0) вплоть до команд "длинного" чтения-записи (AH=OAh,OBh).

Большая часть загрузочных вирусов не проверяет системную память на наличие своей уже установленной TSR-копии: они либо используют "стелс"-приемы, при которых повторный запуск кода вируса невозможен, либо ориентируются на то, что код вируса загружается однократно в момент загрузки DOS, после этого коды загрузочных секторов дисков больше не выполняются ни при каких условиях. Часть вирусов проверяет наличие своей копии. Для этого используются либо специальные вызовы INT 13h с каким-нибудь нестандартным значением, либо помечается заведомо неиспользуемый байт (или слово) в таблице векторов прерываний или в области данных BIOS (0040:00??). Существуют и другие способы обнаружения своей TSR-копии.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: