Изменение выполняемого кода
Наиболее часто подобный способ
полиморфизма используется макро-вирусами,
которые при создании своих новых копий
случайным образом меняют имена своих
переменных, вставляют пустые строки
или меняют свой код каким-либо иным
способом. Таким образом алгоритм работы
вируса остается без изменений, но код
вируса практически полностью меняется
от заражения к заражению.
Реже этот способ применяется сложными
загрузочными вирусами. Такие вирусы
внедряют в загрузочные сектора лишь
достаточно короткую процедуру, которая
считывает и диска основной код вируса
и передает на него управление. Код этой
процедуры выбирается из нескольких
различных вариантов (которые также
могут быть разбавлены "пустыми"
командами), команды переставляются
между собой и т.д.
Еще реже этот прием встречается у
файловых вирусов - ведь им приходится
полностью менять свой код, а для этого
требуются достаточно сложные алгоритмы.
На сегодняшний день известны всего два
таких вируса, один из которых ("Ply")
случайным образом перемещает свои
команды по своему телу и заменяет их на
команды JMP или CALL. Другой вирус ("TMC")
использует более сложный способ - каждый
раз при заражении вирус меняет местами
блоки своего кода и данных, вставляет
"мусор", в своих ассемблерных
инструкциях устанавлявает новые значения
оффсетов на данные, меняет константы и
т.д. В результате, хотя вирус и не шифрует
свой код, он является полиморфик-вирусом
- в коде не присутствует постоянного
набора команд. Более того, при создании
своих новых копий вирус меняет свою
длину.