идентификатора будет найден, процесс поиска продолжается до тех
пор, пока не будет найдена программа без признака вируса "К".
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ вторая прикладная программа ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
В этой найденной программе (в данном случае вторая
прикладная программа ) перезаписывается первая часть, т.е. вирус
уничтожает программные коды основной программы, заменяя их собст-
венными кодами.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦ вторая прикладная программа ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
После того, как собственно процесс распространения "инфек-
ции" будет завершен, выполняется задание на обработку MAN, причем
это может быть заданием на выполнение любого рода операций. После
завершения обработки управление вновь передается программе-носи-
телю вируса, создавая у пользователя иллюзию безупречной работы
программы. Естественно, перезаписывающий вирус вовсе не обяза-
тельно встраивать в программу-носитель. Программа-вирус была бы
жизнеспособна и без программы-носителя, но тогда ее было бы зна-
чительно легче обнаружить.
После завершения процесса занесения "инфекции" программа-
носитель вновь может быть удалена из области адресов доступа ЭВМ,
поскольку вирус уже пустил корни во второй прикладной программе.
Теперь ЭВМ будет работать без сбоев до тех пор, пока не будет
запущена вторая программа. При определенных условиях это может
продолжаться месяцы или годы, если "инфицированной" окажется
такая редко используемая программа, как скажем, EDLIN. Когда
спустя продолжительное время эта программа будет запущена вновь,
- 140 -
инфекция будет продолжать распространяться, и пользователю будет
чрезвычайно сложно найти источник инфекции.
При запуске инфицированной программы только что описанным
способом отыскивается незараженная программа. Первая найденная
программа является второй прикладной программой. Но там есть
идентификатор "К", а потому вирус не заносится и процесс поиска
продолжается.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦ вторая прикладная программа¦ Имеется байт
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ идентификатора К,
процесс поиска
продолжается
Найдена третья прикладная программа, не имеющая
идентификатора "К", т.е. вирус внедряется в эту программу.
Перед запуском второй инфицированной программы:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ третья прикладная программа ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
После запуска второй инфицированной прикладной программы:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦ третья прикладная программа¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
После того, как собственно процесс внедрения вируса
завершен, выполняется задание на выполнение операций любого рода.
Лишь теперь непредусмотренные Вами сообщения об ошибках укажут
Вам на то, что здесь не все в порядке. Итак, инициатор внедрения
вирусов в любом случае достигает своей цели - внедрения задания
на проведение определенных манипуляций.
Здесь следует сказать и о том, что приведенные в качестве
примеров сегменты программы, а также позиция и структура
идентификатора "К" для всех вирусов могут, естественно, выглядеть
совершенно иначе.
9.2 Вирусы, не выполняющие функции перезаписи
Более опасным вариантом компьютерных вирусов, хотя на первый
взгляд они и не кажутся таковыми, являются неперезаписывающие
вирусы. Поскольку чаще всего разрушение программ не в интересах
составителей программ-вирусов, здесь предлагается тип вирусов,
- 141 -
которые смогут существовать и быть активными в ЭВМ годами,
оставаясь незаметными для пользователя. (Обратите внимание на
словосочетание "существовать и быть активными")
В отличие от ошибок, обусловленных перезаписывающими вируса-
ми, в данном случае ошибка, появившаяся однажды, начинает
множиться.
Ощущение безобидности неперзаписывающих вирусов связано с
тем, что эти вирусы приводят к выдаче типичных сообщений об ошиб-
ках. При проведении семинаров по повышению квалификации всегда
можно наблюдать, что демонстрация вируса, который размножается,
не выводя на на дисплей сообщений об ошибках, как правило, не
производит столь сильного впечатления на слушателей, как демонст-
рация вируса, который уже после одного или двух этапов внедрения
вируса выдает на экран беспорядочную последовательность символов.
Это фатальная ошибка мышления, которая встречается не только в
вычислительной технике.
"Где нет симптомов, там нет и болезни".
Но можно ли вообще заразить программу вирусом, не нанеся ей
видимого ущерба ее работоспособности? Этот вопрос, пожалуй,
возникает у каждого, кто хоть раз попытался включить дополнитель-
ные функции в уже существующую в объектных кодах программу.
Неперзаписывающие вирусы строятся примерно по тому же
принципу, что и перезаписывающие, но имеют дополнительную функцию
в форме стандартной программы "MOV". Принцип работы этой станда-
ртной программы легко понять, рассмотрев процесс распространения
такой "инфекции".
K Байт идентификатора вируса
VIR Ядро вируса
MAN Задание на выполнение операции вируса
MOV Стандартная программа сдвига при регенерации программы
А теперь обратимся к инфицированной программе, но инфициро-
ванной вирусом, отличающимся тем, что все "зараженные" эти виру-
сом программы являются носителем вируса, но могут обрабатываться
без выдачи сообщения об ошибке.
Как и для перезаписывающих вирусов, в начале вновь стоит
команда безусловного перехода или нулевая команда, которая явля-
ется идентификатором вируса. Когда вирус активизируется, вначале
- 142 -
по тем же критериям, что и в разделе 9,1, просматривается массо-
вая память.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦ MOV ¦ программа-носитель вируса ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
В процессе поиска вирус найдет вторую прикладную программу.
Поскольку такая программа при соответствующей проверке не обнару-
живает байта идентификтора "К", программа считается неинфицирован-
ной и начинается процесс введения вируса. Но этот процесс внедре-
ния вируса существенно отличается от того, что был описан в раз-
деле 9.1.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ вторая прикладная программа ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
В качестве первого шага из выбранной вирусом программы выде-
ляется некоторая часть, длина которой точно равна длине програм-
мы-вируса без стандартной программы "MOV".
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ 1-я часть ¦ 2-я прикладная программа ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Для сравнения представим здесь вирус без стандартной
программы MOV:
ЪДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦
АДДДДДДДДДДДДДДДЩ
Теперь эта выделенная первая часть копируется в конец второй
прикладной программы и в результате существует в двух
экземплярах, увеличивая старую прикладную программу на собствен-
ную длину. Следует подчеркнуть также, что эта операция над второй
прикладной программой выполняется не в оперативной памяти, а в
соответствующей массовой памяти.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ 1-я часть ¦ 2-я прикладная программа ¦ 1-я часть¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Теперь к уже расширенной второй прикладной программе после
уже скопированной первой части добавляется еще и стандартная
программа MOV, в результате чего программа увеличивается еще на
несколько байтов.
- 143 -
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦1-я часть ¦ 2-я прикладная программа ¦ 1-я часть¦ MOV ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Следующий за этим процесс копирования выполняется точно так
же, как и при перезаписывающем вирусе. Итак, стоящая в начале
программы первая часть второй прикладной программы перезаписыва-
ется программой-вирусом, причем стандартная программа MOV еще раз
копируется, поскольку она уже имеется в конце программы. После
завершения всех этих операций 2-я программа будет выглядеть
таким образом:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦ 2-я прикладная программа ¦1-я часть¦ MOV¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Итак, часть программы перезаписана (заменена). Это необходи-
мо, поскольку "злокачественные" коды этой демонстрационной
программы должны стоять в начале программы, чтобы при запуске
программы обеспечить ее обработку. Но содержимое первой части не
утрачено, поскольку она сохранена в конце программы.
Затем программа-носитель вируса выполняет манипуляции любого
рода, а потом продолжает обработку программы.
Теперь возникает та же ситуация, что была описана в разделе
9.1, когда вирус сначала не размножался и даже никаким образом не
проявлял своей активности. Это состояние сохраняется до тех пор,
пока не будет запущена вторая инфицированная прикладная
программа.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦2-я прикладная программа ¦ 1-я часть¦ MOV ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
После запуска инфицированной программы вначале осуществляет-
ся передача вируса в следующую еще неинфицированную программу
только что описанным образом. В этом случае атаке вируса подвер-
гается третья программа.
Перед запуском второй программы:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ 3-я прикладная программа ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
После запуска второй прикладной программы:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ вирус MAN ¦ 3-я прикладная программа ¦ 1-я часть ¦ MOV¦
- 144 -
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
После того, как собственно процесс внедрения вируса
закончен, а затем выполнено задание MAN, активизируется стандарт-
ная программа MOV.
В оперативной памяти ЭВМ находится инфицированная вторая
прикладная программа. Стандартная программа MOV выделяет из этой
программы сохраненную в конце программы первую часть и вновь
перемещает ее на прежнее место в начало программы.
Перед активацией стандартной программы MOV имеем такую кар-
тину:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ K ¦ VIR ¦ MAN ¦ 2-я прикладная программа ¦1-я часть¦ MOV ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
После активации стандартной программы MOV:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ 1-я часть ¦ 2-я прикладная программа ¦ 1-я часть ¦ MOV ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
В оперативной памяти теперь вновь записана исходная версия
второй прикладной программы. Теперь стандартная программа MOV
выполняет переход в начало программы, после чего программа выпол-
няется без ошибок. Теперь место в памяти, занятое "дубликатной "
первой частью и стандартной программой MOV , уже не требуется и