Осторожно компьютерные вирусы

Резидентные и нерезидентные вирусы


Операционная система MS-DOS является однозадачной. В любой момент времени может работать только одна программа. Когда пользователь закончит с ней работать, программа выгружается из оперативной памяти и пользователь может запустить новую программу. Естественно, это не всегда удобно. Например, если вы пишете в текстовом редакторе финансовый отчет, вам может потребоваться калькулятор. Очень неудобно для запуска калькулятора каждый раз завершать текстовый редактор, а потом запускать его снова.

Чтобы как-то смягчить неудобства, вызванные однозадачностью MS-DOS, был создан механизм резидентных программ. При запуске резидентной программы она сразу возвращает управление операционной системе, но оставляет в оперативной памяти резидентный модуль.

Даже если потом запускаются другие программы этот модуль остается в памяти. Затем, когда пользователь нажимает определенную комбинацию клавиш или при другом условии резидентная программа может активизироваться и выполнить некоторую работу.

В качестве примера можно привести программы резидентных калькуляторов. Они могут быть загружены из командной строки операционной системы или из файла AUTOEXEC.BAT и остаются резидентными в памяти. Если пользователь нажимает определенную комбинацию клавиш, на экране появляется панель калькулятора. Пользователь может выполнить любые вычисления и вернуться в свою программу. Резидентные программы могут выполнять и другие действия. Например, они могут выполнять функции будильника.

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

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

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

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

Некоторые разновидности вирусов, называемые стелс-вирусами, используют резидентный модуль, чтобы замаскировать свое присутствие. Они могут перехватывать обращения к файловой системе и скрывать изменение длины зараженных файлов. Более подробно о стелс-вирусах вы можете прочитать в разделе “Маскировка вирусов”.

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

Любая резидентная программа, и в том числе резидентные модули вирусов, уменьшают объем доступной оперативной памяти. Это изменение можно заметить с помощью команды MEM, входящей в состав операционной системы MS-DOS.



Команда MEM отображает информацию об использовании оперативной памяти компьютера. С помощью нее можно узнать, сколько оперативной памяти установлено на компьютере, сколько памяти занято и сколько свободно для использования:

Memory Type        Total       Used       Free

----------------  --------   --------   --------

Conventional          640K       204K       436K

Upper                   0K         0K         0K

Reserved              384K       384K         0K

Extended (XMS)     15 360K    14 336K     1 024K

----------------  --------   --------   --------



Total memory       16 384K    14 924K     1 460K

Total under 1 MB      640K       204K       436K

Total Expanded (EMS)                1 024K (1 048 576 bytes)

Free Expanded (EMS)                 1 024K (1 048 576 bytes)

Largest executable program size       436K (446 256 bytes)

Largest free upper memory block         0K       (0 bytes)

MS- DOS is resident in the high memory area.

Команда MEM позволяет подробно исследовать резидентные модули, загруженные в память. Для этого при вызове команды ей надо указать дополнительные параметры. Подробное описание команды MEM изложено в десятом томе “Библиотеки системного программиста” - “Компьютер IBM PC/AT, MS-DOS и Windows. Вопросы и ответы”. ‡Здесь мы приведем только основные сведения.

MEM [/CLASSIFY | /DEBUG] [/PAGE]

Если указать дополнительный параметр /CLASSIFY (или /C), то будет представлена информация по каждому резидентному модулю, размещенному в оперативной памяти.

Вместо параметра /CLASSIFY можно указать параметр /DEBUG (или /D). В этом случае будет собрана дополнительная информация о загруженных драйверах.

Команда MEM выводит на экран очень много информации. Так как экран компьютера может одновременно отображать ограниченное количество строк, то выполняется свертка изображения. Дополнительный параметр /PAGE (или /P) позволяет после заполнения очередного экрана выдерживать паузу.

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

Резидентные модули вируса могут затруднить его обнаружение и удаление. Чтобы не дать вирусу шанс получить управление и оставить резидентный модуль в памяти, рекомендуется для проверки компьютера выполнять загрузку с чистой системной дискеты.


Содержание раздела