Первые эксперименты
В 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. Суть этой
игры состояла в том, что человек задумывал некоторое животное, и
программа, задавая вопросы, пыталась определить, какое животное
загадал человек. Программист, написавший игру, предусмотрел в ней
возможность саморазмножения. Когда программа угадывала неправильно, она просила пользователя предложить вопрос, который позволил
бы улучшить ее способности к отгадыванию данного животного. Запомнив этот вопрос, программа не только модифицировала себя, но и пыталась переписать свою обновленную (улучшенную) копию в другой каталог. Если там уже была программа Animal, то она стиралась. В
противном случае создавалась новая копия. Оказалось, что через некоторое время все каталоги файловой системы содержали копию
Animal. Более того, если пользователь переходил с машины на машину, то
он переносил и свой каталог, и в результате во всех каталогах этой ЭВМ также появлялась Animal. При этом совокупность копий
Animal занимала значительное файловое пространство, что в те времена воспринималось как проблема. В соответствии с фольклорной
версией решения проблемы, опубликованной в [Dewdney85], была разработана
новая, более "инфицирующая" модификация игры, которая копировала себя не
один раз, а дважды, тем самым быстро вытесняя собой старую версию. По истечении заданного срока она предлагала
пользователю сыграть последний раз, а затем сама стирала себя с
диска. В действительности, борьба проходила на уровне операционной
системы: в версии 33 операционной системы Exec 8 для этой ЭВМ был
изменен формат таблицы файлов, и игра потеряла возможность размножаться.
|