logo search
Классификация вирусов

3.1.3 Природа и структура вируса

Вирусы могут делать все, что могут делать обычные программы. Единственное отличие состоит в том, что вирус присоединяется к другой программе и выполняется скрытно в процессе работы программы-носителя. Во время работы вирус может выполнить любую операцию, например, стереть файлы документов и программ.

Жизненный цикл типичного вируса состоит из четырех этапов:

  1. Инкубационный период. Вирус никак не проявляется. В конце концов ви рус будет активизирован некоторым событием, например, наступлением определенной даты, присутствием другой программы или файла, появлением достаточного места на диске. Инкубационный период имеют не все вирусы;

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

  3. Фаза активизации. Вирус активизируется для выполнения функции, с которой он создавался. Фаза активизации может быть инициирована самыми разными системными событиями, например, наличием определенного числа копий данного вируса в системе;

  4. Фаза выполнения. Выполняется содержащаяся в вирусе функция. Эта функция может быть как вполне безобидной (например, вывод сообщения на экран), так и совершенно деструктивной (например, уничтожение программ и файлов с данными).

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

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

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

На рис 3.2 изображен вирус, использующий сжатие. Предполагается, что программа P1инфицирована вирусом CV. Когда такая программа запускается на выполнение, управление передается вирусу, который делает следующее:

Рис. 3.2 Вирус, использующий сжатие