К полиморфик-вирусам относятся только те вирусы, детектирование которых практически невозможно осуществить, используя так называемые вирусные маски – это специальные участки постоянного кода, которые специфичны для определенного вируса. Достигается такой результат двумя самыми главными способами – проведением шифрования участка кода вируса с использованием непостоянного ключа и совершенно случайным набором команд используемого дешифратора или изменением самого исполняемого кода вируса.
Кроме этого, существует много примеров полиморфизма – DOS-вирус под названием “Bomber”, который абсолютно не зашифрован, но при этом последовательность заложенных команд, которая во время активности передает управление коду исполняемого вируса, является целиком полиморфной.
Сегодня очень часто можно встретить полиморфизм разной степени сложности самого кода и функционирования, который встречается в вирусах всех без исключения типов – от файловых и загрузочных DOS-вирусов до даже макро-вирусов и Windows-вирусов.
Для генерации кода используется полиморфные расшифровщики (дешифраторы). Это специальный набор программ, при применении которого ни один байт кода расшифровщика и самого вируса не является постоянным (периодично изменяется) при заражении различных файлов.
Более сложные и, соответственно, более емкие полиморфик-вирусы используют во время своего функционирования достаточно сложные алгоритмы для проведения генерации кода своих расшифровщиков.
Во время работы сам код постоянно меняется и дополняется. От заражения к заражению код вируса переставляется местами, разбавляются ничего не меняющие команды типа CLI, STC, NOP, STI, CLC, DEC и используется ненужные регистры и т.д.
Полноценные же известные нам полиморфик-вирусы во время своего функционирования используют еще более емкие и сложные алгоритмы, в результате работы которых в генераторе этого вируса могут встретиться следующие операции: XOR, ROR, SUB, ADD, ROL и остальные, в произвольном порядке и количестве. Загрузка и изменение внесенных в программу ключей и остальных параметров шифровки производится с абсолютно произвольным набором операций, где зачастую встречаются практически все существующие инструкции процессора Intel (XOR, OR, SHR, ADD, SUB, TEST, SHL, ROR, JNZ, PUSH, MOV, XCHG, POP …) с использованием различных режимов адресации.