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

       

Вирусы в COM и EXE файлах


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

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

После запуска зараженной программы управление передается первой команде, замененной вирусом на команду перехода. Поэтому управление сразу передается вирусу.

Получив управление, вирус выполняет действия, определенные его автором. Обычно в этот момент вирус заражает другие выполнимые файлы, устанавливает собственные резидентные модули, совершает другие противоправные действия.

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

Вирусы, заражающие выполнимые файлы, могут записывать свой код не только в конец файла. В качестве примера можно привести вирус Anarchy.2048 и Megadeth. Когда Megadeth заражает выполнимый COM-файл программы, он считывает и сохраняет в конце файла первые байты кода программы. Затем вирус записывает свой код в начало файла, поверх только что сохраненного кода программы.

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

Мы уже говорили, что размер выполнимых файлов в формате COM обычно не превышает 65536 байт. В принципе, можно создать COM файлы большего размера, но для этого они должны самостоятельно загружать себя. Большинство вирусов, заражающих COM-файлы, следят, чтобы суммарный размер файла и вируса не превышал данного значения. Если это условие не выполняется, заражение не происходит.

Среди вирусов, заражающих только COM-файлы, существуют и своего рода шедевры. Например, вирус Micro-92 имеет длину всего 92 байта. Вирус резидентный. Существует только в качестве академического. Автор вируса, Соловьев Михаил Анатольевич, прислал его непосредственно Лозинскому, гарантируя, что он не получит дальнейшего распространения.

Однако рекорд продержался недолго. Игорь Данилов создал вирус Micro-66 длиной 66 байт. Он существует только в качестве коллекционного экземпляра, никогда не распространялся и распространяться не будет. На момент написания книги самый короткий из известных нам вирусов имел длину 58 байт.

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



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