Caratel писал(а):40iN_KoS писал(а):Отсюда - предложение, давайте не будем просто обсуждать количество вирусов, а рассмотрим факторы воздействия оных на систему в целом и отдельные файлы, принципы их работы и т.д., а то к тупику придем
Чтож, согласен… давайте попробуем.
Ну тогда начнем:
на мой взгляд, интересны факты из истории становления вирусов…
Подробнее:
История возникновения вирусов уходит достаточно глубоко в прошлое. Еще в 1959 году американский журнал "Scientific American" опубликовал статью Л.С.Пенроуза (L.S.Penrose) о самовоспроизводящихся механизмах. На ее основе F.G.Stahl создал модель миниатюрной линейной Вселенной, в которой существа жили, двигались и умирали от голода. Модель была запрограммирована на машинном языке ЭВМ IBM 650. Пищей для этих существ служили ненулевые слова. После съедания определенного количества слов существо порождало новое. При размножении были предусмотрены возможности мутаций, в ходе которых существа могли приобретать способность пожирать себе подобных и терять возможность к размножению. Однако ограниченная память и быстродействие IBM 650 послужили препятствием для получения интересных результатов: в ходе пробного прогона один бесплодный мутант убил и съел единственного, способного к размножению.
В 1972 году М.Макилрой из AT&T Bell Laboratories изобрел игру "ДАРВИН". По правилам этой игры, всякий игрок предоставлял известное количество программ, написанных на ассемблере, которые загружались в память компьютера вместе с программами других игроков. Эти программы были названы "организмами". Организмы, созданные одним игроком (т.е. принадлежащие к одному "виду"), должны были "убивать" представителей другого вида и занимать "жизненное пространство". Победителем считался тот игрок, чьи организмы захватывали всю память или набирали наибольшее количество очков. Разумеется, такие программы нельзя назвать вирусами, однако и здесь просматривается определенная аналогия с простейшими биологическими существами. Кроме того, здесь демонстрируется идея борьбы
программ, которая в известной мере предвосхищает ситуацию "вирус - средства защиты", имеющую место сегодня.
Другим ранним примером вирусоподобных программ была игра "ANIMAL" ("ЖИВОТНОЕ"). Суть этой игры состояла в том, что человек задумывал некоторое животное, и программа, задавая вопросы, пыталась определить, какое животное загадал человек. Программист, написавший игру, предусмотрел в ней возможность саморазмножения. Когда программа угадывала неправильно, она просила пользователя
предложить вопрос, который позволил бы улучшить ее способности к отгадыванию данного животного. Запомнив этот вопрос,программа не только модифицировала себя, но и пыталась переписать свою обновленную копию в другой каталог. Если там уже была программа "ANIMAL", то она стиралась. В противном случае создавалась новая копия. Оказалось, что через некоторое время все каталоги файловой системы содержали копию "ANIMAL". Более того, если пользователь переходил с машины на
машину, то он переносил и свой каталог, и в результате во всех каталогах этой ЭВМ также появлялась "ANIMAL".
При этом совокупность копий "ANIMAL" занимала значительное файловое пространство, что в те времена воспринималось как проблема. Для решения этой проблемы была создана новая, более "инфицирующая" копия "ANIMAL", которая копировала себя не один раз, а дважды. По истечении заданного срока она предлагала пользователю сыграть последний раз, а затем сама стирала себя с
диска. В вышедшем в 1975 году бестселлере "The shockware Rider" Джон Бруннер (John Brunner) описал "червей" - программы, распространяющиеся по сети, идею, которая произвела определенное впечатление, хотя ее осуществление находилось за пределами возможностей компьютеров того времени. Не без влияния этой книги в 1982 году в исследовательском центре фирмы XEROX была создана программа-червь. Идея, которой руководствовались авторы программы, состояла в том, что программа,
требующая значительных вычислительных мощностей, захватывала все простаивающие, но подключены к сети ЭВМ с тем, чтобы, например, ночью использовать максимум подключенных вычислительных мощностей, а утром, когда пользователи начинают выполнять свои вычисления, освобождать их, сохраняя промежуточные результаты вычислений. Днем программа "перебивалась" бы одной - двумя машинами, а ночью опять захватывала бы все свободные вычислительные мощности. В связи с этой
способностью к ночному распространению такую программу правильнее было бы назвать не червяком, а вампиром.
В своей статье, посвященной червяку, авторы упоминают о том, что основной проблемой, связанной с отладкой червяка, оказалось его неконтролируемое распространение и зависание части зараженных червяком машин. Поскольку эксперимент проводился на локальной сети Ethernet и часть комнат с включенными машинами следующим утром оказалась закрытой, копии червя в этих машинах заражали другие машины. К счастью, авторы предусмотрели такую возможность и послали по сети команду самоуничтожения всем копиям червяка.
Сюжет французского "шпионского" детектива "Software: La Cinerre Dance" Терри Брентона и Дениса Бениша, опубликованного в 1985 году, основан на продаже СССР американского суперкомпьютера для метеорологической сети. Вместо блокирования сделки американская администрация демонстрирует напускное нежелание санкционировать сделку. В то же время в системное программное обеспечение
компьютера заносится "логическая бомба". При определенных условиях она "взрывается" и уничтожает все программное обеспечение в советской сети. В той мере, в которой этот сюжет представляет собой реальную возможность, это самая настоящая война программ с агентом - подрывником в качестве действующего лица. Поскольку метеорологическая сеть так или иначе связана с авиационными и ракетными системами, роман заставляет нас задуматься.
В 1985 году в журнале "Scientific American" опубликована игра "Core war. В ней два игрока пишут по одной программе каждый на языке низкого уровня REDCODE. Программы помещаются в большой циклически замкнутый участок памяти. Управляющая программа поочередно исполняет одну команду каждой программы, подобно простейшей системе реального времени. Программы атакуют друг друга и в тоже время пытаются избежать повреждений и восстанавливать поврежденные области. Простейшая атака
состоит в использовании команды MOV (записать в память). Например: MOV #0, 1000 может "убить наповал" вражескую программу, если попадет в следующую исполняемую команду (т.е. если следующая выполняемая команда врага расположена по адресу 1000), или "ранить", если это данные или исполняемые команды, или, наконец, "попасть мимо", если ячейка 1000 противной стороной не используется.