MalwareSourceCode/MSDOS/Virus.MSDOS.Unknown.sd.asm

239 lines
5.7 KiB
NASM
Raw Normal View History

2021-01-12 23:58:25 +00:00
; +----------------------------------------------------+ ;
; | Sample DVM Shower for use with the Magic Assembler | ;
; +----------------------------------------------------+ ;
mov ah,09
mov dx,offset(headtxt)
int 21
cmp byte [0081],0d
jne @1
mov dx,offset(syntax)
jmp error
@1 mov si,0082
mov showit,00
@4 lodsb
cmp al,'/'
jne @5
mov byte [si-01],00
lodsb
cmp al,'i'
jne @6
mov showit,ff
jmps @5
@6 cmp al,'I'
jne @5
mov showit,ff
@5 cmp al,0d
jne @4
mov byte [si-01],00
mov ax,3d00
mov dx,0082
int 21
jnc @7
mov dx,offset(openerr)
jmp error
@7 mov handle,ax
mov bx,ax
mov ah,3f
mov cx,0003
mov dx,offset(header)
int 21
mov si,offset(header)
mov di,offset(musthd)
mov cx,0003
@8 cmpsb
jne @9
loop @8
jmps @10
@9 mov dx,offset(notdvm)
jmp error
@10 mov ah,3f
mov cx,0001
mov dx,offset(fullqrt)
int 21
cmp fullqrt,'V'
je @11
cmp fullqrt,'Q'
je @12
mov infobyt,a0
jmps @13
@12 mov infobyt,20
jmps @13
@11 mov ah,3f
mov dx,offset(version)
int 21
cmp version,31
jna @14
mov dx,offset(verr)
jmp error
@14 mov ah,3f
mov dx,offset(infobyt)
int 21
@13 mov ah,3f
mov cx,0002
mov dx,offset(dtime)
int 21
test infobyt,08
jz @15
mov ah,3f
mov dx,offset(l)
int 21
mov cx,l
@16 push cx
mov ah,3f
mov cx,0001
mov dx,offset(ch)
int 21
push bx
mov ah,0e
mov al,ch
xor bh,bh
cmp showit,ff
je @17
int 10
@17 pop bx
pop cx
loop @16
xor ah,ah
cmp showit,ff
jne @15
int 16
@15 mov ax,0013
int 10
push bx
mov ax,1012
mov bx,0000
mov cx,0100
mov dx,offset(palette)
int 10
pop bx
mov ax,a000
mov es,ax
@28 test infobyt,20
jz @32
mov ah,3f
mov dx,offset(palette)
test infobyt,10
jnz @33
mov cx,0030
jmps @34
@33 mov cx,0300
@34 int 21
cmp ax,cx
jne @27
push bx
push es
mov ax,ds
mov es,ax
mov ax,1012
xor bx,bx
test infobyt,10
jnz @35
mov cx,0010
jmps @36
@35 mov cx,0100
@36 int 10
pop es
pop bx
@32 xor di,di
test infobyt,80
jz @18
mov cx,00c8
jmps @19
@18 mov cx,0064
@19 push cx
test infobyt,40
jz @20
call showcpr
jmps @21
@20 call showucp
@21 cmp ah,00
ja @27
test infobyt,80
jnz @22
add di,00a0
@22 pop cx
loop @19
jmps @28
@27 mov ah,3e
mov bx,handle
int 21
xor ah,ah
int 16
mov ax,0003
int 10
mov ax,4c00
int 21
showcpr test infobyt,80
jz @23
mov cx,00a0
jmps @24
@23 mov cx,0050
@24 mov ah,3f
mov dx,offset(line)
int 21
cmp ax,cx
je @26
mov ah,ff
ret
@26 mov si,offset(line)
@25 push cx
lodsb
push ax
and al,f0
mov cl,04
shr al,cl
es:
mov [di],al
pop ax
and al,0f
es:
mov [di+01],al
add di,0002
pop cx
loop @25
xor ah,ah
ret
showucp test infobyt,80
jz @31
mov cx,0140
jmps @29
@31 mov cx,00a0
@29 mov ah,3f
mov dx,offset(line)
int 21
mov si,offset(line)
cmp cx,ax
je @30
mov ah,ff
ret
@30 movsb
loop @30
xor ah,ah
ret
error mov ah,09
int 21
mov ax,4c00
int 21
headtxt db 'Show DVM - Written by Bert for Magic Software - Development Kit Version' 0a 0d '$'
musthd db 'DVM'
notdvm db 'Not a DVM' 0a 0d '$'
openerr db 'Cannot open file' 0a 0d '$'
palette dbe DVMPAL.BIN
syntax db 'Syntax: SDA [Filename.DVM][/I]' 0a 0d '/I shows included text (if exist)' 0a 0d '$'
verr db 'Cannot display this version' 0a 0d '$'
-
ch db ?
dtime dw ?
fullqrt db ?
handle dw ?
header ds 3
infobyt db ?
l dw ?
line ds 140
showit db ?
version db ?