Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Коваль И. Весь текст 308.41 Kb

Как написать компьютерный вирус

Предыдущая страница Следующая страница
1 2 3 4  5 6 7 8 9 10 11 12 13 14 ... 27
    общем совсем неплохой книги. " Книжный " вирус су-
    щественно переработан,исправлены замеченные ошибки
    и глюки.Несмотря на это поступок автора трудно на-
    звать  плагиатом. Просто  затронутая в работе П.Л.
    Хижняка тема получила новое развитие.


                     1.19 Комментарии

    Вирус,который мы разработали, отыскивает программы
    для заражения лишь в том каталоге, из которого был
    запущен зараженный файл .Понятно,что в этом случае
    большой заразностью он не обладает.Но во - первых,
    мы идем от простого к  сложному,  и следующие наши
    программы будут более эффективными .А во - вторых,
    эта разработка лишь преследовала цель показать ос-
    новные приемы изготовления вирусных программ.Кроме
    того, чрезмерная  сложность наверняка отпугнула бы
    читателя .


                   1.20 Испытание вируса

    Для проверки в действии разработанной нами програ-
    ммы  просто скопируйте ее в отдельный файл ( коне-
    чно, только если у вас есть дискета с текстом кни-
    ги ).Далее скопируйте в каталог с вирусом несколь-
    ко COM - файлов.Откомпилируйте  исходный  текст  и
    запустите полученный COM - файл,содержащий в  себе
    вирусный код.Проблем с компиляцией быть не должно,
    так как  программа  тщательно  тестировалась . По-
    наблюдайте,  как вирус  заражает файлы .Попробуйте
    запустить зараженную программу под управлением от-
    ладчика и в автоматическом режиме.И, наконец, про-
    верьте зараженную программу с помощью DOCTOR WEB .


            ГЛАВА 2 . РАЗРАБОТКА РЕЗИДЕНТНОЙ
                    ВИРУСНОЙ ПРОГРАММЫ


          2.1 Понятие резидентного ( TSR ) вируса

    Резидентными называют вирусы, которые после запус-
    ка зараженной программы помещают свой код в опера-
    тивную память  . Этот  код "занимается" заражением
    файлов и находится в памяти в течение всего сеанса
    работы .
    Резидентные вирусы обычно намного заразнее нерези-
    дентных и распространяются быстрее .Однако создать
    такой вирус не так просто . Кроме того,резидентные
    вирусные программы подвержены  всевозможным  сбоям
    и могут конфликтовать с установленным на компьюте-
    ре  программным обеспечением . Но несмотря  на все
    трудности,  возникающие при разработке резидентных
    вирусов,  их было создано великое множество .
    В предлагаемой вниманию читателей главе  рассказы-
    вается о приемах создания TSR - вирусов,  поражаю-
    щих COM - файлы .Кроме того,  освещаются  основные
    проблемы, с которыми приходится встречаться при их
    разработке .


       2.2 Несколько слов о резидентных программах

    Вы,наверное, знаете, как строятся резидентные про-
    граммы .В этом  пункте мы немного поговорим об  их
    организации и функционировании .
    Резидентными называют программы,которые после сво-
    его  завершения остаются в памяти и активизируются
    при наступлении  каких - либо событий  в  вычисли-
    тельной системе .Такими событиями могут быть, нап-
    ример, нажатие " горячей " комбинации клавиш,  вы-
    полнение некоторых операций с дисками и т. п .Но в
    любом  случае  программа  получает  управление при
    тех или иных условиях .
    Все резидентные программы строятся одинаково,  или
    почти одинаково, и состоят из двух секций - секции
    инициализации и собственно резидентной части.Рези-
    дентная часть, как правило, состоит из  одной  или
    нескольких подпрограмм - обработчиков прерываний и
    находится в памяти во время сеанса работы  компью-
    тера .Такие подпрограммы могут полностью подменять
    собой системные обработчики или только служить  их
    дополнением.Естественно,для того,чтобы резидентная
    часть получила управление, необходимо заменить со-
    ответствующие вектора в таблице векторов  прерыва-
    ний на точки входа в заново установленные обработ-
    чики.Эту функцию и выполняет секция инициализации,
    которая всегда выполняется  при запуске  программы
    первой .
    После перехвата прерываний, которые должна обраба-
    тывать резидентная часть, секция инициализации за-
    вершает программу, используя для этой цели  преры-
    вание или функцию резидентного завершения MS DOS .
    В результате резидентная часть остается в памяти и
    активизируется в случаях, предусмотренных  автором
    программы . Часть инициализации в процессе  работы
    больше не потребуется,поэтому оставлять ее в памя-
    ти  бессмысленно,  и она " затирается "  MS DOS  в
    случае необходимости .


             2.3 Алгоритм работы резидентного
                        COM - вируса

    Рассмотрим один из возможных алгоритмов работы ре-
    зидентного COM - вируса .
    По своей сути резидентный вирус отличается от обы-
    чной резидентной программы только тем, что он раз-
    множается сам по себе, независимо от желания поль-
    зователя.Значит,построить его можно по той же схе-
    ме, по которой пишутся обычные TSR - программы .Но
    сначала выясним,что должны делать секция инициали-
    зации вируса и его резидентная часть .
    Итак :
    Секция инициализации выполняет следующие действия:

    1. Получает управление при запуске зараженной про-
    граммы .

    2. Проверяет, установлена ли в память  резидентная
    часть вируса .

    3. Восстанавливает в  памяти компьютера   исходные
    три  байтa этой программы .

    4. Если резидентная часть не установлена,выполняю-
    тся следующие действия :

       a.) Отыскивается свободный блок памяти достато-
           чного для размещения вируса размера .

       б.) Код вируса копируется в найденный блок  па-
           мяти .

       в.) В таблице  векторов прерываний соответству-
           ющие вектора заменяются точками входа в ви-
           русные обработчики .

       г.) Выполняется  переход  на начало  зараженной
           программы ( на адрес CS : 100h ).После это-
           го программа выполняется, как обычно .

    В том случае,  если резидентная часть  вируса  уже
    находится в памяти, он просто передает  управление
    зараженной программе .

    Резидентная часть выполняет следующие действия :

    1. Анализирует  все вызовы  системного  прерывания
    INT 21h с целью выявить переход оператора в  новый
    каталог или смену текущего диска .

    2. Если обнаружится смена текущего диска или ката-
    лога, резидентная часть должна :

       а.) Сохранить исходное состояние вычислительной
           системы .

       б.) Найти на диске подходящий COM - файл .

       в.) Записать тело вируса в конец этого файла .

       г.) Заменить  первые три байта  заражаемой про-
           граммы командой  перехода на  вирусный код,
           сохранив предварительно исходные  три байта
           в своей области данных.

       д.) Восстановить исходное состояние  вычислите-
           льной системы и передать ей управление .

    Если оператор не будет менять текущий католог  или
    диск, вирус, очевидно, ничего заразить не сможет .

    Как вы уже заметили, заражением файлов  занимается
    исключительно резидентная часть ! Секция инициали-
    зации нужна  только для инсталляции  вируса в  па-
    мять .Кроме того, в отличие от обычной резидентной
    программы, в вирусе  эта секция записывается в па-
    мять вместе с  резидентной  частью . Иначе при за-
    писи  ее в заражаемый файл возникли  бы  серьезные
    трудности .
    Из рассказанного в этом пункте легко  сделать  вы-
    вод о том, насколько резидентный вирус должен быть
    устроен сложнее обычного .Вместе с тем,  в его на-
    писании  нет ничего  магического, и  вы без  труда
    разберетесь в следующей программе .


                  2.4 Заголовок вируса

    Для разработки вируса мы, как и раньше, будем  ис-
    пользовать COM формат .
    Естественно,в резидентном вирусе будут использова-
    ны  некоторые блоки, созданные  нами в  предыдущей
    главе .Поэтому на их работе мы останавливаться  не
    будем, а вместо этого сделаем акцент на новых при-
    емах, реализованных в программе .
    Итак, начнем :

    prg segment
       assume cs:prg,ds:prg,es:prg,ss:prg
          org 100h

    start:     jmp vir                ;Передача управ-
                                      ;ления вирусному
                                      ;коду ...
	       org 110h

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


                 2.5 Вирус начинает работу

    Несколько  забегая вперед, отметим, что наш  вирус
    будет работать так :

       1. Обработчик  прерывания  Int 21h  отслеживает
          смену оператором текущего каталога или  дис-
          ка. Если  пользователь действительно  сменил
          диск или каталог,то переменная TG_INFECT ус-
          танавливается в единицу.
       2. Обработчик прерывания Int 28h вызывается DOS
          всякий раз, когда можно, не боясь зависаний,
          обращаться к системным  функциям, работающим
          с файлами. Поэтому естественно возложить  на
          него задачу поиска и заражения файлов.Исходя
          из этого процедура обработки Int 28h  прове-
          ряет  значение  TG_INFECT, и  если оно равно
          единице, выполняет поиск и заражение файлов.

    --------------------------------------------------

    После  перехода на метку " vir " начинается испол-
    нение вирусной программы .Поэтому продолжим :
    ( Собственно это и есть начало обработчика  преры-
    вания Int 28h )

    vir:       db 0ebh                ;90h - Для рези-
               db push_len            ;90h   дентной
                                      ;      работы .

               pushf                  ;Запишем флаги
                                      ;в стек ...
               cmp cs:tg_infect-110h,1;Активизиро-
                                      ;ваться ?
               je cs:vir_2            ;Да ...
               call dword ptr cs:old_28h - 110h
                                      ;Нет - вызовем
                                      ;старый обработ-
                                      ;чик INT 28h,
                                      ;чтобы не топить
                                      ;другие TSR ...
               iret

    vir_2:     popf                   ;Переключаем
                                      ;стек для TSR -
                                      ;исполнения на
               mov cs:ss_save-110h,ss ;себя ...
               mov cs:sp_save-110h,sp
               mov cs:help_word - 110h,cs
               mov ss,cs:help_word - 110h
               mov sp,to_newstack + 136
               mov cs:tg_infect - 110h,0
               pushf                  ;Вызываем старый
               db 9ah                 ;обработчик
    old_28h    dw 0                   ;INT 28h ...
    old_28h_2  dw 0

    Обратите внимание на команду,записанную в машинном
    коде сразу за меткой " vir " .Сейчас мы  попробуем
    разобраться, зачем она потребовалась .
    Как вы знаете, наш вирус должен быть резидентным и
    состоять из двух частей .При этом секция инициали-
    зации исполняется только в транзитном ( нерезиден-
    тном ) режиме,а резидентная часть - только в рези-
    дентном.

    Команда
               db 0ebh                ;90h - Для рези-
               db push_len            ;90h   дентной
                                      ;      работы .

    играет  роль " переключателя " между транзитным  и
    резидентным кодами .При заражении вирус записывает
    в файл команду перехода, которая при запуске зара-
    женного  файла передает управление на " push_len "
    байт вперед,  где как раз и начинается секция ини-
    циализации .Если же попытаться выполнить эту кома-
Предыдущая страница Следующая страница
1 2 3 4  5 6 7 8 9 10 11 12 13 14 ... 27
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (9)

Реклама