телей распространяются странные слухи о таинственных виру-
сах в ЭВМ. Часто полагают,что речь идет об органических ви-
русах, и уже боятся трогать чужие дискеты без перчаток и
предпочитают пользоваться почтовыми ящиками из боязни зара-
жения.По-видимому, среди пользователей ЭВМ распространилась
истерия, аналогичная страху перед эпидемией СПИДа.
Эта книга должна помочь как читателям, которые хотят
ознакомиться с этой темой, так и читателям, которые интере-
суются прежде всего программированием вирусов, предоставив
им исчерпывающую информацию по всем разделам проблемы виру-
сов.
Эта книга все же не очень удобна. Она ставит вопрос о
поиске новых путей в программировании.Компьютерные вирусы
поставили проблему, которая ждет решения силами молодых за-
интересованных программистов. Эта книга предоставляет таким
программистам всю необходимую информацию. Почти во всех об-
щеупотребительных языках программирования имеются программы
-вирусы, разработку которых следует продолжить.
Однако работа с компьютерными вирусами требует осозна-
ния высокой ответственности за возможный ущерб.Как и все
технические новшества, компьютерные вирусы имеют две сторо-
ны. Неверное использование вирусов может нанести невообра-
зимый ущерб; правильное их использование может породить но-
вое поколение ЭВМ.Эта книга позволит любому читателю
принять участие в этих разработках и внести свой вклад в
развитие систем обработки данных.
Тот, кто хочет практически и экспериментально разоб-
раться с компьютерными вирусами, очень быстро обнаружит, ка-
кие фантастически привлекательные возможности открывают
программы-вирусы.
При этом возникает вопрос:
Как, собственно говоря, оценить тот факт, что хороший
программист отправляет в путешествие свой закодированный в
двоичном коде интеллект с заданием размножаться и меряться
силой с "внешним миром"?
На этот вопрос каждый должен ответить сам. Книга отве-
та на этот вопрос не дает.
- 9 -
1. Что такое компьютерные вирусы?
Еще пять лет назад заявление программиста о том, что
ЭВМ может быть поражена "вирусами", вероятно, вызвало бы
лишь сострадательную улыбку коллег. Между тем, отношение к
этой проблеме постепенно изменяется, и не в последнюю оче-
редь,из-за большого числа не всегда квалифицированных пуб-
ликаций в различных специальных журналах. Однако и сейчас
еще многие пользователи считают, что, когда речь идет о
компьютерных вирусах, имеются в виду вирусы в биологическом
смысле этого слова.
Конечно это не так.Компьютерные вирусы - это такие же
программы, как FIBU или программа обработки текста. Однако,
такое искаженное представление о компьютерных вирусах обус-
ловило широкий спектр мнений по этому поводу - от уже упо-
минавшейся сострадательной улыбки и понимающей ухмылки до
панического страха поражения вирусами. Профессиональное об-
суждение этой темы до сих пор не проводилось. Речь шла о
"чужих дискетах", о червяках, проедающих ЭВМ, и об "аппа-
ратных вирусах, повреждающих ПЗУ".
Эта книга должна внести некоторую ясность в проблему и
послужить проводником в мир компьютерных вирусов.Книга со-
держит практические указания и много фактических материа-
лов, связанных с этими программами. Прежде всего, поясняет-
ся возникновение самого термина "компьютерные вирусы",
основанного на аналогии между биологическими и компьютерны-
ми вирусами.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Биологические вирусы ¦ Компьютерные вирусы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Нападают на специальные ¦ Вмешиваются в определенные
соматические клетки ¦ программы (все *.COM, все
¦ *.ЕХЕ...)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Изменяется наследственная ¦ Программа обрабатывается:
информация клетки ¦ Выполняются не те задания,
¦ которые были предусмотрены
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
В пораженной клетке ¦ В пораженной программе
- 10 -
созревают новые ¦ самовоспроизводится
вирусы ¦ программа-вирус
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Инфицированная клетка не ¦ Одна и та же программа поража-
поражается одним и тем же ¦ ется большинством вирусов
вирусом многократно ¦ лишь однажды
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Пораженный организм обычно в¦ Пораженная программа может в
течение длительного времени ¦ течение длительного времени
не проявляет признаков ¦ работать без ошибок
заболевания ¦
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Не все клетки, контактиру- ¦ Программу можно сделать не-
ющие с вирусом,инфициру- ¦ восприимчивой к определенным
ются ¦ вирусам
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Вирусы могут мутировать, ¦ Программы-вирусы могут изме-
благодаря чему они не всегда¦ няться, отчего процедуры по-
однозначно распознаются ¦ иска могут их не замечать
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Этот перечень можно было бы еще продолжить.
Теперь читатель спросит: "Как это возможно, что прог-
рамма в ЭВМ ведет себя так же, как вирус в организме?".
Чтобы ответить на этот вопрос, необходимо ознакомиться со
структурой вычислительной системы. Так как целью этой книги
является также ознакомление любителей с вирусными програм-
мами, на последующих страницах кратко поясняется структура
вычислительной системы. Это пояснение сильно ориентировано
на операционную систему MS-DOS,однако все сказанное можно
отнести также к большей части других операционных систем.
(Читателям, знакомым с ЭВМ, следует запастись терпением на
несколько следующих страниц. Более подробные пояснения не-
обходимы также,чтобы сделать понятными специальные термины,
неизвестные широкому кругу пользователей ).
1.1 Программы в устройствах обработки данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Аппаратное обеспечение Проще говоря,речь идет обо всех
- 11 -
ДДДДДДДДДДДДДДДДДДДДДДД частях ЭВМ, до которых можно до-
тронуться.
Программное обеспечение В отличие от аппаратного обеспечения,
ДДДДДДДДДДДДДДДДДДДДДДД до программного обеспечения никому
не удавалось дотронуться, так как
здесь речь идет только о последо-
вательности программных инструк-
ций.
Аппаратное обеспечение ЭВМ включает в себя следующие
компоненты:
Процессор (микропроцессор/центральный процессор)
ДДДДДДДДД
Это "мозг" ЭВМ.Он обрабатывает команды программы и мо-
жет выполнять логические операции.
Оперативная память (память прямого доступа)
ДДДДДДДДДДДДДДДДДД
"Кратковременная память" ЭВМ. В рабочей памяти распо-
лагается информация, к которой процессор должен иметь быст-
рый доступ. При выключении напряжения питания информация в
ОЗУ теряется.
Постоянная память (постоянное запоминающее устройство/
ДДДДДДДДДДДДДДДДД ПЗУ/ЭППЗУ )
"Инстинктивные" функции ЭВМ записаны в постоянной па-
мяти.Пользователь обычно не может изменить содержимое пос-
тоянной памяти. Здесь обычно записаны важные стандартные
программы, такие как вывод на экран дисплея, управление
принтером и т.д.
Массовая память (гибкий диск/жесткий диск/стриммер)
ДДДДДДДДДДДДДДД
"Долговременная память" ЭВМ. Информация, записанная в
массовой памяти, не теряется и при выключении напряжения
питания.
Внешние устройства (принтер/плоттер/монитор)
- 12 -
ДДДДДДДДДДДДДДДДДД
Все устройства, подключенные к ЭВМ.
Эти аппаратные средства можно эксплуатировать при по-
мощи программного обеспечения:
Операционная система
ДДДДДДДДДДДДДДДДДДДД
Уровень пользователя. операционная система создает
программное окружение. Благодаря этому на ЭВМ с одинаковыми
операционными системами можно использовать одни и те же
программы, даже если эти ЭВМ изготовлены разными произво-
дителями. Эта переносимость программ обозначается как "сов-
местимость". Операционная система использует множество
функций или программ, хранящихся в постоянной памяти, и
предоставляет в распоряжение стандартные операции:
ввод,вывод и дисковые операции (ДОС = дисковая опера-
ционная система).
Прикладное программное обеспечение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Программы, превращающие ЭВМ в средство труда. В ка-
честве примеров могут быть названы редактирование текс-
та, ведение финансового учета и сбор измеренных данных.
Программа состоит из последовательности команд процессора.
Во время работы процессор постоянно обращается к памяти,так
как оттуда он получает свои инструкции.
Исходный код или исходный текст
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Программа,написанная на языке программирования, опера-
торы которого могут быть напечатаны, например, на Паска-
ле, Фортране, Бейсике. Этот исходный код должен быть либо
приведен к виду, понятному для процессора, при помощи ком-
пилятора (см. ниже), либо обработан при помощи интерпрета-
тора (см. ниже).
Объектный код
ДДДДДДДДДДДДД
- 13 -
Исходный текст, странслированный компилятором (см. ни-
же). Объектный код может обрабатываться процессором.
Компилятор
ДДДДДДДДДД
Компилятор транслирует непонятный процессору исходный
текст в исполняемую программу (объектный код).
Интерпретатор
ДДДДДДДДДДДДД
Во время обработки программы интерпретатор для каждого
оператора программы, представленной в исходном тексте, об-
ращается к таблице трансляции, а затем выполняет найденные
команды процессора.
Управление рабочей памятью осуществляет операционная
система или прикладное программное обеспечение. Распределе-
ние рабочей памяти в общем случае выглядит следующим обра-
зом:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ Занято системой ¦ Старшие адреса системы
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
¦ Третья прикладная программа ¦
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
¦ Вторая прикладная программа ¦
¦ ¦
¦ Первая прикладная программа ¦
¦ ¦
¦ Операционная система, включая ¦
¦ функции, содержащиеся в ПЗУ. ¦ Младшие адреса системы
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Как видно из таблицы, в рабочей памяти одновременно с
операционной системой могут находиться несколько прикладных
программ.
Процессор, разумеется, не может обрабатывать одновре-
менно несколько программ.
Хотя иногда кажется, что в ЭВМ одновременно выполняет-
- 14 -
ся несколько процессов (читателю наверняка знакомы часы,
которые всегда показывают время в углу экрана дисплея), на
самом деле эти процессы сдвинуты во времени, причем сдвиг
настолько мал, что незаметен пользователю. Программы, кото-
рые постоянно находятся в рабочей памяти, не будучи посто-
янно активными, называются программами, резидентными в па-
мяти.
Богатые возможности, которые предоставляют резидентные
в памяти программы,так как они являются основой для специ-
альной формы компьютерных вирусов. Очень полезным свойством
резидентных программ является отсутствие затрат времени на
их загрузку при повторном запуске. Обычная программа перед
каждым повторным запуском должна быть передана (загружена)
из массовой памяти в рабочую, на что каждый раз требуется
определенное время - время загрузки,- программа же, рези-
дентная в памяти,после однократной загрузки всегда доступна