Первая.
Вирус-"родитель", запущенный с зараженной программы, пристраивает собственную копию в конец первой попавшейся (в "джунглях" оперативной памяти или на винчестере) полезной и пока "чистой" программы (например, игры), а на ее начало накладывает команду перехода на только что родившееся "дитя", стертые стартовые байты заражаемой жертвы сохраняет в специально отведенном у новой копии месте (чтобы не потерять их и тем самым заранее не обнаружиться) - вот и весь цикл. Стоит теперь запустить больную игру - и первым получит управление прицепившийся сзади паразит (с помощью команды перехода), который повторит процесс размножения, найдя свеженькую жертву, выполнит предписываемые перемещенными командами действия и затем (в инкубационный период) передаст управление своей жертве - программе-вирусоносителю. Пользователь ничего и не заметит - запустил игру, игра и пошла, а на ничтожную заминку при старте внимания никто не обратит.Так работают болгарские вирусы "Янки Дудль" - CE-2890R, играющий в 17.00 (по часам компьютера) известную одноименную мелодию, "Черный мститель" - СЕ1813R, уничтожающий через 16 копирований содержимое одного сектора винчестера, и многие другие (здесь и далее применяется классификация Н.Н.Безрукова: С - заражение СОМ-файлов; Е - заражение ЕХЕ-файлов; число - размер вируса в байтах; R - резидентность, то есть способность управлять компьютером даже после того, как запустившая его программа, отработав, покинула оперативную память). Исправить положение несложно. Для этого нужно найти и переместить обратно затертые команды начала, а затем отрезать от программы инородную часть.
По второй
схеме самокопирование происходит на свободный участок, а в служебные таблицы вводится информация о том, что файл начинается именно там. (Система MS DOS позволяет хранить на дисках программы в "разрезанном" состоянии, "склеивая" их в оперативной памяти по записям в каталоге.) Так действует израильский вирус "Черная пятница" (CE-1813R), названный так потому, что по пятницам, приходящимся на 13-е число, уничтожает все содержимое винчестера. В этом случае достаточно найти истинное начало файла и внести соответствующую запись в служебные таблицы.Малораспространенная третья схема
реализована в "Лехайском вирусе" (C-346R), который через четыре цикла саморазмножения обнуляет 32 сектора винчестера, - он располагается в середине программы, на участке, зарезервированном под цифровые данные пользователя, но до работы пока свободном. Не все программы имеют такую структуру, поэтому у хакеров подобный прием не пользуется почетом.И наконец, четвертая схема
- вирус переписывает начало программы-жертвы, равное своему объему, в ее конец, а на освободившемся участке размещает собственное "дитя". Так поступает С-529 - во всем остальном, кстати, чистейший плагиат с "Черной пятницы" (подумать только, и вирусы воруют!). Для ликвидации достаточно проделать то же самое в обратном порядке.В борьбе с вирусами распространено два подхода: лечение и профилактика.
Основной метод лечения заключается в поиске антивирусной программой знакомых специалисту комбинаций байтов, характеризующих определенную инфекцию и запрограммированное ее удаление. Для профилактики же используются программы, которые контролируют размеры файлов на винчестере и перехватывают команды записи, постоянно запрашивая у оператора подтверждение - действительно ли он хочет что-то записать, или это старается вирус.
В обоих случаях эффективность далека от 100%. Например, версия лечебной программы Д.Лозинского Aidstest, рассчитанная на 315 "творческих находок" хакеров, не заметит 316-ю, А во втором случае не всегда понятно, кто хочет сделать запись: вирус или запущенная оператором программа, поскольку в ходе любой работы на компьютере что-то постоянно сбрасывается на магнитный носитель, чтобы освободить оперативную память.
Вот если бы формализовать интеллектуальный труд вирусолога по анализу структуры и повадок новых штаммов, созданию лечебных процедур, а затем описать все это алгоритмическим языком, заодно включив и элементы профилактики! Тогда компьютер научился бы самостоятельно предотвращать или лечить любую заразу.