7-11-85 6:45р PLAY BAS 192 3-21-85 1:08р REDIM BAS
439 4-13-85 3:15р BVS BAS 2691 7-14-87 9:46а INH
605 7-14-87 9:53а %ALL BAS 612 4-12-85 5:53р
13 DATEIEN 336896 BYRES FREI
Если теперь вызвать программу CALL.BAS, вирус продолжит свое
распространение, причем без выдачи сообщения об ошибке. Единственно,
что может указать на выполнение каких-то манипуляций, увеличившееся время
исполнения и загрузки программ. В эти программы без больших затрат могут
включаться собственные, написанные на Бейсике задания. Можно
использовать и задания, написанные на других языках, но тог-
да запускать их нужно с помощью SHELL.
При полном распространении вируса содержимое каталога
будет выглядеть следующим образом:
Кatalog von a:
CALL BAS 2704 7-14-87 9:53а
COMMAND BAS 2707 7-14-87 9:55а
DEC BAS 2703 7-14-87 9:55а
DEFFN BAS 2705 7-14-87 9:56а
DIGIT BAS 2705 7-14-87 10:05а
DRAW BAS 2704 7-14-87 10:05а
KONVERT BAS 2707 7-14-87 10:06а
MAIN BAS 2704 7-14-87 10:06а
PLAY BAS 2704 7-14-87 10:07а
- 226 -
REDIM BAS 2705 7-14-87 10:07а
BVS BAS 2703 7-14-87 10:07а
INH 974 7-14-87 10:07а
%ALL BAS 612 4-12-85 5:53p
%OMMAND BAS 659 4-04-85 4:06р
%EC BAS 236 7-11-85 6:46р
%EFFN BAS 336 3-07-85 3:04р
%IGIT BAS 217 7-11-85 6:46р
%RAW BAS 681 4-19-85 4:03р
%ONVERT BAS 3584 1-01-80 12:03а
%AIN BAS 180 7-11-85 6:45р
%LAY BAS 192 3-21-85 1:08р
%EDIN BAS 439 4-13-85 3:15р
%VS BAS 2691 7-14-87 9:46а
23 DATEIEN 306176 Byte frei
11. Различные операционные системы
В этой главе (не претендуя на полноту) рассмотрим нес-
колько наиболее употребительных операционных систем с точки
зрения их подверженности воздействию вирусов. Распечатка
системных функций может облегчить понимание принципа дейс-
твия программы-вируса, описанной в разделе 10 и далее.
Поскольку стандартные операционные системы персональных
компьютеров (CP/M и MS-DOS) в равной степени подвержены ви-
русам, и их системные функции весьма похожи. Так все опера-
ционные системы в качестве основных функций содержат прог-
раммы или стандартные подпрограммы, необходимые для работы с
наборами данных или программами компьютера. Таковы команды
DIR, TYPE, COPY, PIP, MODE, SETIO и др. Сюда же относятся
отладчик и программа обработки стека. Причем для принципи-
ального рассмотрения не имеет значения, о каких функциях
идет речь - о резидентных или нерезидентных.
Поскольку к минимальным требованиям, предъявляемым
программой-вирусом, относятся (см. раздел 1.5) право чтения
и записи и доступ к содержимому каталога массовой памяти,
отсюда следует, что каждая совершенная операционная система
в принципе подвержена заражению вирусами. Однако некоторые
операционные системы имеют известные программные средства
- 227 -
защиты от такого заражения.
11.1 MS-DOS
функции операционной системы MS-DOS вызываются на уров-
не ассемблера через так называемые программные прерывания.
Такие прерывания оказывают на процессор такое же воздейс-
твие, как и непосредственное обращение к памяти.
Первые 32 прерывания используются почти исключительно
BIOS или аппаратным обеспечением:
00 Деление на нуль
01 Пошаговый
02 NMI
03 Точка прерывания
04 Переполнение
05 Вывод на экран
06 Не используется
07 Не используется
08 Таймер
09 Клавиатура
ОА Не используется
ОВ AUX port COM2
OC AUX port COM1
CD Kонтроллер жесткого диска
OE Контроллер гибкого диска
OF Принтер
10 Экран
11 Аппаратный контроль
12 Определить обьем памяти
13 Чтение/запись диска (сектора)
14 Логическое имя канала чтения/записи
15 Кассетный накопитель
16 Клавиатура
17 Принтер
18 Базовое ПЗУ
19 Начальная загрузка
IA Время
IB Прерывание с клавиатуры
IC Таймер
- 228 -
ID Инициализация экрана
IE Адрес параметров диска
IF Адрес набора кодов ASCII
С прерывания с номером 20НЕХ начинается собственно сис-
темные прерывания. Они доступны лишь после загрузки MS-DOS:
20 Прервать программу
21 Вызов DOS
22 Адрес завершения программы
23 Адрес Ctrl-С
24 Адрес фатальной ошибки диска
25 Чтение диска на физическом уровне
26 Запись на диск на физическом уровне
27 Прервать/остаться резидентом
28 Внутреннее прерывание DOS
-
3F
40 Зарезервировано для расширений
-
3F
60 Прерывания на уровне пользователя
-
TF
80 Прерывания на уровне Бейсика
-
85
86 Интерпретатор прерываний Бейсика
-
FO
F1 Не используется
-
FF
Среди перечисленных выше системных прерываний одно,
имеющее номер 21НЕХ, имеет особое значение. При вызове этой
функции в регистр АН заносится одно из следующих значений,
прежде чем будет разрешено прерывание, а значит, и прежде
чем будет выполнена соответствующая функция:
00 Прервать программу
01 Чтение с клавиатуры и эхо-контроль
02 Символ дисплея
- 229 -
03 Вторичный ввод
04 Вторичный вывод
05 Символ печати
06 Непосредственный ввод/вывод на консоль
07 Непосредственный ввод с консоли
08 Чтение с клавиатуры
09 Строка дисплея
ОА Буферизованный ввод с клавиатуры
ОВ Состояние при контроле клавиатуры
ОС Очистка буфера/чтение с клавиатуры
OD Очистка буфера/сброс диска
ОЕ Установить связь с диском
OF Открыть файл
10 Закрыть файл
11 Поиск по первому элементу
12 Поиск по следующему элементу
13 Удалить файл
14 Последовательное чтение
15 Последовательная запись
16 Создать файл
17 Переименовать файл
18 Внутреннее прерывание
19 Считать текущий диск
IA Адрес передачи на диск
IB Внутреннее прерывание MS-DOS
IC Внутреннее прерывание MS-DOS
IE Внутреннее прерывание MS-DOS
IF Внутреннее прерывание MS-DOS
20 Внутреннее прерывание MS-DOS
21 Чтение при прямом доступе
22 Запись при прямом доступе
23 Вычислить размер файла
24 Установить запись прямого доступа
25 Установить вектор прерывания
26 Создать новый сегмент программы
27 Считать блок прямого доступа
28 Запись блока прямого доступа
29 Сделать синтаксический анализ имени файла
2А Считать дату
- 230 -
2С Считать время
2D Установить время
2Е Установка/сброс контрольных флажков
2F Вычислить адрес области передачи диска
30 Считать номер версии DOS
31 Прервать программу/оставить резидентом
32 Внутреннее прерывание MS-DOS
33 Контроль на CTRL-С
34 Внутреннее прерывание MS-DOS
35 Определить вектор прерывания
36 Определить свободное пространство диска
37 Внутреннее прерывание MS-DOS
38 Определить зависящую от страны информацию
39 Создать подкаталог
3А Исключить каталог
3В Каталог текущих изменений
3С Создать/обработать файл
3D Открыть/обработать файл
3E Закрыть/обработать файл
3F Чтение из файла/с устройства
40 Запись в файл/ на устройство
41 Удалить файл
42 Переслать указатель чтения/записи
43 Атрибуты изменений
44 Контроль ввода/вывода для устройств
45 Обработать файл копий
46 Переназначение ввода/вывода
47 Определить текущий каталог
48 Распределить/заблокировать память
49 Незаблокированная память
4A Модифицировать распределенную память
4B Загрузить/ выполнить программу
4C Прерывать процесс (ошибка)
- 231 -
4D Определить код возраста подчиненных
4E Найти совпадающий файл
4F Найти следующий файл
50 Внутреннее прерывание ms-dos
51 Внутреннее прерывание ms-dos
52 Внутреннее прерывание ms-dos
53 Внутреннее прерывание ms-dos
54 Флажок проверки возврата
56 Определить/установить файл времени и даты
Как можно видеть, имеются все необходимые для создания
программ-вирусов функции, многие из которых имеют различную
форму.
11.2 Вирусы в среде СР/М
------------------------
В отличном от ms-dos, СР/М (процессор z80) не использует
программные прерывания, а использует команду call по адресу
0005 16, передавая номер соответствующей функции в регистр С.
Многие имеющиеся в ms-dos функции имеются и в более старой
операционной системе СР/М:
0 Системный сброс
1 Ввод с консоли
2 Вывод нв консоль
3 Вторичный ввод
4 Вторичный вывод
5 Вывод списка
6 Непосредственный ввод/вывод на консоль
7 Состояние вторичного ввода
8 Состояние вторичного вывода
9 Печать строки
10 Чтение буфера консоли
11 Определить состояние консоли
12 Возврат номера версии
13 Сброс дисковой системы
14 Выделить диск
15 открыть файл
16 Закрыть файл
17 Поиск по первому элементу
18 Поиск следующего элемента
- 232 -
19 Удалить файл
20 Последовательное чтение
21 Последовательная запись
22 Сформировать файл
23 Переименовать файл
24 Возврат вектора входа в систему
25 Возврат текущего диска
26 Установить адрес прямого доступа к памяти DMA
27 Определить адрес (размещения)
28 Запись на защищенный диск
29 Определить вектор
30 Установить атрибуты файла
31 Определить адрес (DBP)
32 Установить/определить код пользователя
33 Чтение прямого доступа
34 Запись прямого доступа
35 Определить размер файла
36 Установить запись прямого доступа
37 Сброс дисковода
40 Запись прямого доступа с росписью нулями
41 Проверка и запись записи
42 Блокировать запись
43 Разблокировать запись
44 Установить счетчик секторов мультидоступа
45 Установить режим обработки ошибок
46 Определить свободное пространство диска
47 Связать с программой
48 Очистить буферы
49 Определить/установить блок системного контроля
50 Непосредственный вызов
59 Загрузить оверлейный файл
60 Вызов резидентной системы
98 Свободные блоки
99 Укоротить файл
100 Установить метку каталога
101 Возврат данных метки каталога
102 Считать штампы даты файла и режима пароля
103 Запись файла xfcb
104 Установить дату и время
- 233 -
105 Определить дату и время
106 Установить пароль по умолчанию
107 Возвратить порядковый номер
108 Определить/установить код возврата программы
109 Определить/установить режим консоли
110 Определить/установить ограничитель вывода
111 Печать блока
112 Вывод блока на экран
152 Синтаксический анализ имени файла