Компьютерные вирусы

Формально компьютерным вирусом называется программа, которая может заражать другие программы путем включения в них своей, возможно модифицированной, копии, причем последняя сохраняет способность к дальнейшему размножению. Программа, зараженная вирусом, может рассматриваться как автоматически созданная троянская программа. В данном случае скрытым модулем является тело вируса, а одним из несанкционированных действий — заражение других программ. Помимо заражения, вирус, подобно любой другой троянской программе, может выполнять и другие несанкционированные действия, от вполне безобидных до крайне разрушительных. Последние, в частности, могут включать уничтожение данных на зараженном диске. В этом случае вирус может рассматриваться как логическая мина. Выполняемые вирусом несанкционированные действия могут быть обусловлены наступлением определенной даты (такие троянские программы в какой-то степени аналогичны минам с часовым механизмом) или определенного количества размножений, или сочетанием определенных условий, например записи зараженной программы на винчестер (последние аналогичны различного рода бесконтактным минам). При этом комбинация этих условий может быть достаточно сложной, чтобы затруднить ее определение.

Инфицируя программы, вирусы могут распространяться от одной программы к другой (транзитивно), что делает их более опасными по сравнению с другими методами компьютерного вандализма. Зараженные программы (или их копии) могут передаваться через внешние носители или по сети на другие компьютеры. Учитывая широко распространенную практику обмена и передачи программ через интернет среди пользователей персональных компьютеров, количество зараженных программ может быть значительным, приводя к своего рода эпидемиям. Опасность существенно возрастает при наличии винчестера, программы на котором используются всеми пользователями. В этом случае один неквалифицированный или злонамеренный пользователь может нанести значительный ущерб другим пользователям. Особую опасность с точки зрения распространения компьютерных вирусов представляют любители компьютерных игр, обычно слабо знающие операционную систему и не вполне понимающие смысл выполняемых ими действий. Такие пользователи подвергают значительному риску своих коллег, работающих с ними на одной компьютере.

Упрощенно процесс заражения вирусом программных файлов можно представить следующим образом. Код зараженной программы обычно изменен таким образом, чтобы вирус получил управление первым, до начала работы программы-вирусоносителя. При передаче управления вирусу он каким-то способом находит новую программу и выполняет вставку собственной копии в начало или добавление ее в конец этой, обычно еще не зараженной, программы. Если вирус дописывается в конец программы, то он корректирует код программы, чтобы получить управление первым. Для этого первые несколько байтов запоминаются в теле вируса, а на их место вставляется команда перехода на начало вируса. Этот способ является наиболее распространенным. Получив управление, вирус восстанавливает “спрятанные” первые байты, а после отработки своего тела передает управление программе-вирусоносителю, и та нормально выполняет свои функции. Возможны случаи, когда вирус включает себя куда-то в середину программы, например, в область стека. Последние случаи встречаются редко.