містить цей генератор. В усіх генераторах, що зустрічалися, цей модуль містить зовнішню (external) функцію - виклик програми генератора. У такий спосіб автору вірусу, якщо він бажає створити справжній поліморфік-вірус, не потрібно розробляти власний за- чи роз- шифровувач. При бажанні він може підключити до свого вірусу будь-який відомий поліморфік – генератор.
Використання стелс-алгоритмів дозволяє вірусам цілком або частково сховати себе в системі. Найпоширенішим стелс-алгоритмом є перехоплення запитів операційної системи на читання / запис інфікованих об'єктів. Стелс-віруси при цьому або тимчасово гоять їх, або “підставляють“ замість себе неінфіковані ділянки інформації. У випадку макро-вірусів найпопулярніший засіб захисту - заборона викликів меню перегляду макросів. Самошифрування і поліморфічність використовуються практично всіма типами вірусів для того, щоб максимально ускладнити процедуру виявлення вірусу. Поліморфік - віруси (polymorphic) - це достатньо важкознаходжувані віруси, що не мають сигнатур, тобто не містять жодної постійної ділянки коду. У більшості випадків два зразки того самого поліморфік - вірусу не будуть мати жодного збігу. Це досягається шифруванням основного тіла вірусу і модифікаціями програми-розшифровувача.
Стелс-віруси тими або іншими засобами приховують факт своєї присутності в системі. Відомі стелс-віруси всіх типів, за винятком Windows-вірусів - завантажувальні віруси, файлові DOS-віруси і навіть макро-віруси. Поява стелс-вірусів, що інфікують файли Windows, є швидше за все справою часу. Завантажувальні стелс-віруси для маскування свого коду використовують два основних способи. Перший із них полягає в тому, що вірус перехоплює команди читання інфікованого сектора і підставляє замість нього неінфікований оригінал. Цей засіб робить вірус невидимим для будь-якої DOS-програми, включаючи антивіруси, недієздатні “лікувати“ оперативну пам'ять комп'ютера. Можливе перехоплення команд читання секторів на нижчому рівні. Другий засіб спрямований проти антивірусів, що підтримують команди прямого читання секторів через порти контролера диску. Такі віруси при запуску будь-якої програми (включаючи антивірус) відновлюють інфіковані сектори, а після закінчення її роботи знову інфікують диск. Оскільки цей вірус перехоплює запуск і закінчення роботи програм, то він повинен перехоплювати також DOS-переривання. З деякими допущеннями стелс-вірусами можна назвати віруси, що вносять мінімальні зміни в інфікований сектор або маскуються під код стандартного завантажувача.
Віруси можуть поділятися на класи за такими основними ознаками:
середовище перебування;
операційна система;
особливості алгоритму роботи;
деструктивні можливості.
По середовищу перебування віруси можна розділити на файлові, завантажувальні, мережні та макровіруси.
Файлові віруси.
Файлові віруси або різноманітними засобами впроваджуються у виконувані файли (найбільш поширений тип вірусів), або створюють файли-двійники (компаньйон - віруси), або використовують особливості організації файлової системи (link-віруси).
До даної групи відносяться віруси, що при своєму розмноженні тим або іншим засобом використовують файлову систему якоїсь операційної системи. Діяльність файлового вірусу можлива практично у всіх популярних операційних системах. Існують віруси, що інфікують файли, що містять вихідні тексти програм, бібліотечні або об'єктні модулі. Можливий запис вірусу й у файли даних, але це трапляється або в результаті помилки вірусу, або при прояві його агресивних властивостей. Макро-віруси також записують свій код у файли даних (документи або електронні таблиці), проте ці віруси настільки специфічні, що винесені в окрему групу.
По способу інфікації файлів віруси діляться на перезаписуючі “overwriting“, паразитичні (“parasitic“), компаньйони-віруси (“companion“), “link“-віруси, віруси-хробаки і віруси, що інфікують об'єктні модулі (OBJ), бібліотеки компіляторів (LIB) і вихідні тексти програм.
Метод “Overwriting” інфікації є найпростішим: вірус записує свій код замість коду файла, що інфікується, знищуючи його вмістиме. Природно, що в цьому випадку файл перестає працювати і не відновлюється. Такі віруси дуже швидко виявляють себе, тому що операційна система і прикладні програми досить швидко перестають працювати. Не відомо жодного випадку, коли подібного типу віруси були б виявлені “у живому вигляді“ і стали причиною епідемії.
До паразитичних відносяться файлові віруси, які при поширенні своїх копій обов'язково змінюють вміст файлів, залишаючи ці файли цілком або частково працездатними. Ці віруси можуть записуватися в початок файлів (“prepending“), у кінець файлів (“appending“) і в середину файлів (“inserting“). У свою чергу, запис вірусів в середину файлів відбувається різноманітними методами - шляхом переносу частини файла в його кінець або копіювання свого коду в явно невикористовувані дані файла (“cavity“-віруси).
До категорії “компаньйон“ відносяться віруси, що не змінюють файлів, які вони інфікують. Алгоритм роботи цих вірусів полягає в тому, що для інфікованого файла створюється файл-двійник, причому при запуску інфікованого файла керування одержує саме цей двійник, тобто вірус.
Файлові хробаки (worms) в деякому сенсі є різновидом компаньйонів-вірусів, але при цьому ніяким чином не пов'язують свою присутність із яким-небудь виконуваним файлом. Під час розмноження вони усього лише копіюють своє тіло у які-небудь каталоги дисків в надії, що ці нові копії будуть коли-небудь запущені користувачем помилково. Іноді ці віруси дають своїм копіям “спеціальні“ імена, щоб підштовхнути користувача на запуск своєї копії - наприклад, INSTALL. EXE або WINSTART. BAT.
Link-віруси, як і компаньйони-віруси не змінюють фізичного вмісту файлів, проте при запуску інфікованого файлу “змушують“ операційну систему виконати закладені в них дії. Цієї мети вони досягають шляхом модифікації необхідних полів файлової системи.
Віруси, що інфікують бібліотеки компіляторів, об'єктні модулі і вихідні тексти програм не є поширеними. Віруси, що інфікують OBJ- і LIB-файли, записують у них свій код у форматі цих файлів. Але інфікований файл не є виконавчим і не здатний на подальше поширення вірусу у своєму поточному стані. Носієм “живого“ вірусу стає виконавчий файл, що одержує керування в процесі під'єднання інфікованого OBJ/LIB-файла. Таким чином, вірус поширюється в два етапи: на першому