Існує розподіл поліморфік-вірусів на рівні в залежності від складності коду, який зустрічається в розшифровщик цих вірусів. Такий поділ вперше запропонував д-р. Алан Соломон, через деякий час Вессей-лін Бончев розширив його.
Рівень 1. Віруси, які мають певний набір розшифровувачів з постійним кодом і при зараженні вибирають один з них. Такі віруси є полуполіморфікамі і носять також назва олігоморфік (oligomorphic).
Приклади: Cheeba, Slovakia, Whale.
Рівень 2. розшифровщик вірусу містить одну або кілька постійних інструкцій, основна ж його частина непостійна.
Рівень 3. розшифровщик містить невикористовувані інструкції - сміття типу NOP, CLI, STI і т. Д.
Рівень 4. У розшифровувача використовуються взаємозамінні інструкції і зміна порядку проходження (перемішування) інструкцій. Алгоритм розшифровки при цьому не змінюється.
Рівень 5. Використовуються всі перераховані вище прийоми, алгоритм розшифровки непостійний, можливе повторне шифрування коду вірусу і навіть часткове шифрування самого коду расшифровщика.
Рівень 6. Permutating-віруси. Зміні підлягає основний код вірусу - ділиться на блоки, які при зараженні переставляються в довільному порядку. Вірус при цьому залишається працездатним. Подібні віруси можуть бути не зашифровані.
Наведене вище поділ не вільно від недоліків, оскільки проводиться за єдиним критерієм - можливості виявляти вірус за кодом расшифровщика за допомогою стандартного прийому вірусних масок:
Рівень 1. Для виявлення вірусу досить мати кілька масок.
Рівень 2. Виявлення по масці з використанням wildcards.
Рівень 3. Виявлення по масці після видалення інструкцій- "сміття".
Рівень 4. Маска містить кілька варіантів можливого коду, т. Е. Стає алгоритмічної.
Рівень 5. Неможливість виявлення вірусу по масці.
Недостатність такого поділу продемонстрована у вірусі 3-го рівня поліморфічность, який так і називається - Level3. Цей вірус, будучи одним з найбільш складних поліморфік-вірусів, за наведеним вище поділу потрапляє в рівень 3, оскільки має постійний алгоритм розшифровки, перед яким стоїть велика кількість команд- "сміття". Однак в цьому вірусі алгоритм генерування "сміття" доведений до досконалості: в коді расшифровщика можуть зустрітися практично всі інструкції процесора i8086.
Якщо зробити розподіл на рівні з точки зору антивірусів, що використовують системи автоматичного розшифрування коду вірусу (емулятори), то розподіл на рівні буде залежати від складності емуляції коду вірусу. Можливо визначення вірусу і іншими прийомами, наприклад расшіфрова-ня за допомогою елементарних математичних законів і т. Д. Тому мені здається більш об'єктивним розподіл, в якому крім критерію вірусних масок беруть участь і інші параметри:
1. Ступінь складності поліморфік-коду (відсоток від усіх інструкцій процесора, які можуть зустрітися в коді расшифровщика).
2. Використання антіемуляторних прийомів.
3. Сталість алгоритму расшифровщика.
4. Сталість довжини расшифровщика.
Мені не хотілося б викладати ці пункти докладніше, оскільки це може підштовхнути вірусів до створення подібних монстрів.