Рассмотрим теперь схему работы простого файлового вируса.
В отличие от загрузочных вирусов, которые практически всегда резидентны, файловые вирусы совсем не обязательно резиденты. Рассмотрим схему функционирования нерезидентного файлового вируса. Пусть у нас имеется инфицированный исполняемый файл. При запуске такого файла вирус получает управление, производит некоторые действия и передает управление «хозяину».
Какие же действия выполняет вирус? Он ищет новый объект для заражения — подходящий по типу файл, который еще не заражен. Заражая файл, вирус внедряется в его код, чтобы получить управление при запуске этого файла. Кроме своей основной функции — размножения, вирус вполне может сделать что-нибудь замысловатое (сказать, спросить, сыграть) — это уже зависит от фантазии автора вируса. Если файловый вирус резидентный, то он установится в память и получит возможность заражать файлы и проявлять прочие способности не только во время работы зараженного файла. Заражая исполняемый файл, вирус всегда изменяет его код — следовательно, заражение исполняемого файла всегда можно обнаружить.
Но, изменяя код файла, вирус не обязательно вносит другие изменения:
• он не обязан менять длину файла;
• неиспользуемые участки кода;
• не обязан менять начало файла.
Таким образом, при запуске любого файла вирус получает управление (операционная система запускает его сама), резидентно устанавливается в память и передает управление вызванному файлу.
Принцип их действия заключается в следующем. Вирус добавляет свой код к одной из специальных программ, которые обычно всегда начинают выполняться сразу после включения питания компьютера, еще до загрузки операционной системы. В принципе в задачу этого ПО как раз и входят «подготовка» и запуск ОС. Таким образом, вирус сам получает управление и может выполнить определенные, заданные злоумышленником действия, например записать себя в оперативную память. И только после этого будет загружаться «нормальная» операционная система. Вот только вирус уже будет находиться в памяти и сможет контролировать ее работу, так как будет угодно его создателю.
Рассмотрим типовую схему функционирования очень простого загрузочного вируса, заражающего дискеты (boot-sector).
Пусть у вас имеются чистая дискета и зараженный компьютер, под которым мы понимаем компьютер с активным резидентным вирусом. Как только этот вирус обнаружит, что в дисководе появилась подходящая жертва — в нашем случае не защищенная от записи и еще не зараженная дискета, он приступает к заражению. Заражая дискету, вирус производит следующие действия:
• выделяет некоторую область диска и помечает ее как недоступную операционной системе, это можно сделать по-разному, в простейшем и традиционном случае занятые вирусом секторы помечаются как сбойные (bad);
• копирует в выделенную область диска свой хвост и оригинальный (здоровый) загрузочный сектор;
• замещает программу начальной загрузки в загрузочном секторе (настоящем) своей головой;
• организует цепочку передачи управления согласно схеме.
Таким образом, голова вируса теперь первой получает управление, вирус устанавливается в память и передает управление оригинальному загрузочному сектору.
Основное разрушительное действие — шифрование секторов винчестера. При каждом запуске вирус шифрует очередную порцию секторов, а, зашифровав половину жесткого диска, радостно сообщает об этом. Основная проблема при лечении данного вируса состоит в том, что недостаточно просто удалить вирус из файлов, надо расшифровать зашифрованную им информацию.