КОМПЬЮТЕРНАЯ ВИРУСОЛОГИЯ

11. ЗАКЛЮЧЕНИЕ

ЛИТЕРАТУРА

ПРИЛОЖЕНИЕ 1. Классификационная таблица файловых вирусов, обнаруженных в
CCCР
ПРИЛОЖЕНИЕ 2. Классификационная таблица бутовых вирусов, обнаруженных в
CCCР
ПРИЛОЖЕНИЕ 3. Классификационная таблица файловых вирусов, известных
только по литературе
ПРИЛОЖЕНИЕ 4. Классификационная таблица бутовых вирусов, известных
только по литературе
ПРИЛОЖЕНИЕ 5. Перечень отечественных антивирусных средств, помещенных в
выпусках электронного бюллетеня СОФТПАНОРАМА
ПРИЛОЖЕНИЕ 6. Некоторые сведения о файловой системе MS DOS
ПРИЛОЖЕНИЕ 7. Исполняемые файлы и связанные с ними системные блоки
ПРИЛОЖЕНИЕ 8. Прерывания MS DOS
ПРИЛОЖЕНИЕ 9. Наиболее часто используемые функции MS DOS

1. ОЧЕРК ИСТОРИИ КОМПЬЮТЕРНЫХ ВИРУСОВ

1.1. Предыстория

«Vestigia semper adora»
(Всегда уважай следы)
Стаций (40-50 до н.э.)

Компьютерные вирусы являются одной из разновидностей компьютер-
ного вандализма, получившего распространение в конце 80-х гг. Ис-
торически их возникновение связано с идеей создания самовоспроиз-
водящихся программ — концепции, уходящей своими корнями в пятиде-
сятые годы. Идея самовоспроизводящихся механизмов исследовалась
еще Джоном фон Нейманом, который в 1951 г. предложил метод созда-
ния таких механизмов. Несомненно, идея вирусоподобных программ не-
однократно открывалась и переоткрывалась различными авторами. Тем
не менее, восстановление приоритета исследователей в опубликовании
той или иной грани концепции вирусоподобных программ является в
какой-то мере актом восстановления справедливости по отношению к
тем, чьи работы были незаслуженно забыты или вообще проигнорирова-
ны. Это касается прежде всего европейских исследователей, вклад
которых в разработку различных проблем системного программирования
часто игнорируется или замалчивается в американских публикациях.
Первой публикацией, связанной с рассматриваемой концепцией, мож-
но считать статью Л.С.Пенроуза (L.S.Penrose) о самовоспроизводя-
щихся механических структурах [Penrose59], опубликованную в
1959 г. американским журналом «Scientific American». В этой
статье, наряду с примерами чисто механических конструкций, была
приведена некая двумерная модель подобных структур, способных к
активации, захвату и освобождению. Под влиянием этой статьи
Ф.Ж.Шталь (F.G.Stahl) запрограммировал на машинном языке ЭВМ IBM
650 биокибернетическую модель, в которой существа двигались, пита-
ясь ненулевыми словами [Dewdney85]. При N передвижениях без пищи
существо умирало от голода, а после съедания определенного количе-
ства слов порождало новое. При размножении была предусмотрена воз-
можность мутаций, в ходе которых существа могли приобретать спо-
собность пожирать себе подобных и терять возможность к размноже-
нию. Однако ограниченная память и быстродействие IBM 650 послужили
препятствием для получения интересных результатов: в ходе пробного
прогона один бесплодный мутант убил и съел единственного, способ-
ного к размножению.

1.1.1. Первые эксперименты

В 1962 г. В.А.Высотский (V.А.Vyssotsky), Х.Д.Макилрой
(H.D.McIlroy) и Роберт Моррис (Robert Morris) — фирма Bell
Telephone Laboratories, США — изобрели достаточно необычную игру
«Дарвин», в которой несколько ассемблерных программ, названных
«организмами», загружались в память компьютера. Организмы, создан-
ные одним игроком (т.е. принадлежащие к одному виду), должны были
уничтожать представителей другого вида и захватывать жизненное
пространство. Победителем считался тот игрок, чьи организмы захва-
тывали всю память или набирали наибольшее количество очков. Игра
проходит на большом участке памяти, называемом ареной и управляе-
мом специальной программой — супервизором. Вид V состоит из N(V)
особей. Каждая особь (K=1..N(V)) имеет размер S(K) (K=1..N(V),
S(K) < MAXS) и расположена в R(K) последовательных ячейках, начи-
ная с головы G(K), причем R(V) точек со смещениями
P(K,1)..P(K,R(V)) относительно головы являются защищенными. Орга-
низм, который получает управление, может использовать три вида об-
ращения к супервизору:
PROBE(n,loc) -- запрос о содержании ячейки с адресом loc (если
эта ячейка защищена, то управление передается ее обладателю, а ес-
ли нет, то возвращаются три числа -- <номер вида организма, занима-
ющего ячейку> (ноль, если ячейка свободна), <начало> и <конец>
(если ячейка свободна, то начало и конец свободного участка арены,
в который она входит; нули, если ячейка занята организмом));
KILL(loc) — уничтожить организм по адресу loc (loc должна при-
надлежать организму другого вида и должна быть предварительно исс-
ледована PROBE любым организмом того же вида, что и нападающий);
CLAIM(n,loc) — размножить организм на участок свободного про-
странства, включающий loc (ячейка loc должна быть предварительно
исследована с помощью PROBE и не менее S(K) ячеек должно быть сво-
бодно, возможно, в результате предыдущего KILL).
«Игра для полуночников», возникшая в фирме Bell Telephone
Laboratories, быстро приобрела популярность и в других учебных и
исследовательских центрах, например в исследовательском центре
фирмы Ксерокс в Пало Альто и в Массачусетском институте технологии
(МИТ). Отметим, что долгое время описание игры существовало только
«в устном фольклоре»: статья с описанием игры была опубликована
только в 1972 г. [SP&E72], причем в ее тексте использовался термин
«вирус» применительно к одному из видов организмов.
Приблизительно в 1970 г. была создана саморазмножающаяся про-
грамма для одной из первых компьютерных сетей — APRAnet. Программа
CREEPER, которая по некоторым данным была написана Бобом Томасом
(Bob Thomas) из BBN, путешествовала по сети, обнаруживая свое по-
явление сообщением

«I’M THE CREEPER … CATCH ME IF YOU CAN»
(«Я КРИПЕР … ПОЙМАЙ МЕНЯ, ЕСЛИ СМОЖЕШЬ»).

Для борьбы с ней была создана программа REAPER, которая также
путешествовала по сети и уничтожала встретившиеся экземпляры
CREEPER. Эта идея, представляющая собой вариацию подхода, распро-
страненного в среде знахарей, — «подобное лечится подобным», позд-
нее неоднократно использовалась и в других программах борьбы с
ранними вирусами, однако в целом оказалась неудачной.
В 1974 г. была написана программа RABBIT (Кролик), которая раз-
множалась на трех соединенных между собой машинах IBM, причем по-
явление новых подзадач вызывало замедление реакции, а затем и пол-
ное зависание машин.
Другим примером вирусоподобных программ была игра Animal (Живо-
тное), разработанная примерно в 1975 г. для UNIVAC 1108. Суть этой
игры состояла в том, что человек задумывал некоторое животное, и

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128