Получив управление, вирус совершает следующие действия (приведен список наиболее
общих действий вируса при его выполнении; для конкретного вируса список может
быть дополнен, пункты могут поменяться местами и значительно расшириться):
- резидентный вирус проверяет оперативную память на наличие своей копии и инфицирует память компьютера, если копия вируса не найдена. Нерезидентный вирус ищет незараженные файлы в текущем и (или) корневом оглавлении, в оглавлениях, отмеченных командой PATH, сканирует дерево каталогов логических дисков, а затем заражает обнаруженные файлы;
- выполняет, если они есть, дополнительные функции: деструктивные действия, графические или звуковые эффекты и т.д. Дополнительные функции резидентного вируса могут вызываться спустя некоторое время после активизации в зависимости от текущего времени, конфигурации системы, внутренних счетчиков
вируса или других условий; в этом случае вирус при активизации обрабатывает состояние системных часов, устанавливает свои счетчики и т.д.;
- возвращает управление основной программе (если она есть). Паразитические вирусы при этом либо a) лечат файл, выполняют его, а затем снова заражают, либо б) восстанавливает программу (но не файл) в исходном виде (например, у COM-программы восстанавливается несколько первых байт, у EXE-программы вычисляется истинный стартовый адрес, у драйвера восстанавливаются значения адресов программ
стратегии и прерывания). Компаньон-вирусы запускают на выполнение своего "хозяина",
вирусы-черви и overwriting-вирусы возвращают управление DOS.
Метод восстановления программы в первоначальном виде зависит от способа заражения
файла. Если вирус внедряется в начало файла, то он либо сдвигает коды зараженной
программы на число байт, равное длине вируса, либо перемещает часть кода программы
из ее конца в начало, либо восстанавливает файл на диске, а затем запускает
его. Если вирус записался в конец файла, то при восстановлении программы он
использует информацию, сохраненную в своем теле при заражении файла. Это может
быть длина файла, несколько байт начала файла в случае COM-файла или несколько
байтов заголовка в случае EXE-файла. Если же вирус записывается в середину файла
специальным образом, то при восстановлении файла он использует еще и специальные
алгоритмы. |