Первые эксперименты
🕛 10.02.2009, 12:25
В 1962 г. В.А.Высотский (V.А.Vyssotsky), Х.Д.Макилрой(H.D.McIlroy) и Роберт Моррис (Robert Morris) фирма BellTelephone 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 TelephoneLaboratories, быстро приобрела популярность и в других учебных иисследовательских центрах, например в исследовательском центрефирмы Ксерокс в Пало Альто и в Массачусетском институте технологии(МИТ). Отметим, что долгое время описание игры существовало тольков устном фольклоре: статья с описанием игры была опубликованатолько в 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 для этой ЭВМ былизменен формат таблицы файлов, и игра потеряла возможность размножаться.