Компьютерные вирусы
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферат на тему образ жизни, сочинение язык
| Добавил(а) на сайт: Jeshman.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Отработав, вирус передает управление своему коду в конце программы.
Восстанавливается первоначальный вид программы – тело программы сдвигается к адресу 0100h
После восстановления вирус запускает программу
рис. 4
EXE – вирусы
EXE – вирусы условно можно разделить на группы, используя в качестве признака для деления особенности алгоритма.
Вирусы, замещающие программный код (Overwrite).
Такие вирусы уже стали раритетом. Их главный недостаток – слишком грубая работа. Инфицированные программы не исполняются, так как вирус записывается поверх программного кода, не сохраняя его. При запуске вирус ищет очередную жертву (или жертвы), открывает найденный файл для редактирования и записывает свое тело в начало программы, не сохраняя оригинальный код. Инфицированные этими вирусами программы лечению не подлежат.
Вирусы – спутники (Companion).
Эти вирусы получили свое название из-за алгоритма размножения: к каждому инфицированному файлу создается файл – спутник. Рассмотрим более подробно два типа вируса этой группы:
Вирусы первого типа размножаются следующим образом. Для каждого
инфицируемого EXE – файла в том же каталоге создается файл с вирусным
кодом, имеющим такое же имя, что и EXE – файл, но с расширением СОМ. Вирус
активизируется, если при запуске программы в командной строке указано
только имя исполняемого файла. Дело в том, что, если не указано расширение
файла, DOS сначала ищет в текущем каталоге файл с заданным именем и
расширением СОМ. Если СОМ – файл с таким именем не найден, ведется поиск
одноименного ЕХЕ – файла. Если не найден и ЕХЕ – файл, DOS попробует
обнаружить и ВАТ (пакетный) файл. В случае отсутствия в текущем каталоге
исполняемого файла с указанным именем поиск ведется во всех каталогах, доступных по переменной РАТН. Другими словами, когда пользователь хочет
запустить программу и набирает в командной строке только ее имя (в основном
так все и делают ), первым управление получает вирус, код которого
находится в СОМ – файле. Он создает СОМ – файл еще к одному или нескольким
ЕХЕ – файлам (распространяется), а затем исполняет ЕХЕ – файл с указанным в
командной строке именем. Пользователь же думает, что работает только
запущенная ЕХЕ – программа. Вирус – спутник обезвредить довольно просто –
достаточно удалить СОМ – файл.
Вирусы второго типа действуют более тонко. Имя инфицируемого ЕХЕ –
файла остается прежним, а расширение заменяется каким – либо другим, отличным от исполняемого (СОМ, ЕХЕ и ВАТ). Например файл может пллучить
расширение DAT (файл данных) или OVL (программный оверлей). Затем на место
ЕХЕ – файла копируется вирусный код. При запуске такой инфицированной
программы управление получает вирусный код, находящийся в ЕХЕ – файле.
Инфицировав еще один или несколько ЕХЕ – файлов таким же образом, вирус
возвращает оригинальному файлу исполняемое расширение (но не ЕХЕ, а СОМ, посколько ЕХЕ – файл стаким именем занят вирусом), после чего исполняет
его. Когда работа инфицированной программы закончена, ее запускаемому файлу
возвращается расширение неисполняемого. Лечение файлов, зараженных вирусом
этого типа, может быть затруднено, если вирус – спутник шифрует часть или
все тело инфицируемого файла, а перед исполнением его расшифровывает.
Вирусы, внедряющиеся в программу (Parasitic)
Вирусы этого вида самые незаметные: их код записывается в инфицируемую программу, что существенно затрудняет лечение зараженных файлов. Рассмотрим методы внедрения ЕХЕ - вирусов в ЕХЕ - файл.
Способы заражения ЕХЕ – файлов.
Самый распространенный способ заражения ЕХЕ – файлов такой: в конец файла дописывается тело вируса, а заголовок корректируется (с сохранением оригинального) так, чтобы при запуске инфицированного файла управление получал вирус. Похоже на заражение СОМ – файлов, но вместо задания в коде перехода в начало вируса корректируется собственно адрес точки запуска программы. После окончания работы вирус берет из сохраненного заголовка оригинальный адрес запуска программы, прибавляет к его сегментной компоненте значение регистра DS или ES (полученное при старте вируса) и передает управление на полученный адрес.
Следующий способ – внедрение вируса в начало файла со сдвигом кода
программы. Механизм заражения такой: тело инфицируемой программы
считывается в память, на ее место записывается вирусный код, а после него –
код инфицируемой программы. Таким образом, код программы как бы
«сдвигается» в файле на длину кода вируса. Отсюда и название способа –
«способ сдвига». При запуске инфицированного файла вирус заражает еще один
или несколько файлов. После этого он считывает в память код программы, записывает его в специально созданный на диске временный файл с расширением
исполняемого файла (СОМ или ЕХЕ), и затем исполняет этот файл. Когда
программа закончила работу, временный файл удаляется. Если при создании
вируса не применялось дополнительных приемов защиты, то вылечить
инфицированный файл очень просто – достаточно удалить код вируса в начале
файла, и программа снова будет работоспособной. Недостаток этого метода в
том, что приходиться считывать в память весь код инфицируемой программы (а
бывают экземпляры размером больше 1 Мбайт).
Следующий способ заражения файлов – метод переноса – по всей видимости, является самым совершенным из всех перечисленных. Вирус размножается следующим образом: при запуске инфицируемой программы тело вируса из нее считывается в память. Затем ведется поиск неинфицированной программы. В память считывается ее начало, по длине равную телу вируса. На это место записывается тело вируса. Начало программы из памяти дописывается в конец файла. Отсюда название метода – «метод переноса». После того, как вирус инфицировал один или несколько файлов, он приступает к исполнению программы, из которой запустился. Для этого он считывает начало инфицированной программы, сохраненное в конце файла, и записывает его в начало файла, восстанавливая работоспособность программы. Затем вирус удаляет код начала программы из конца файла, восстанавливая оригинальную длину файла, и исполняет программу. После завершения программы вирус вновь записывает свой код в начало файла, а оригинальное начало программы - в конец. Этим методом могут быть инфицированы даже антивирусы, которые проверяют свой код на целостность, так как запускаемая вирусом программа имеет в точности такой же код, как и до инфицирования.
Вирусы под Windows 9x.
Формат Portable Executable используется Win 32, Windows NT , Windows
95, Windows 98, что делает его очень популярным, и в будущем, возможно он
станет доминирующим форматом ЕХЕ. Этот формат значительно отличается от NE
– executable, используемого в Windows 3.11.
Вызов Windows API.
Обычные приложения вызывают Windows API (Application Program Interface) используя таблицу импортируемых имен. Когда приложение загружено, данные, необходимые для вызова API, заносятся в эту таблицу. В Windows 9x, благодаря предусмотрительности фирмы – производителя Microsoft, модифицировать таблицу импортируемых имен невозможно. Это проблема решается непосредственным вызовом KERNEL32. То есть необходимо полностью игнорировать структуру вызова и перейти непосредственно на точку входа DLL.
Чтобы получить описатель (Handle) DLL/ЕХЕ, можно использовать вызов
АРI GetModuleHandle или другие функции для получения точек входа модуля, включая функцию получения адреса API GetProcAddress.
Как вызывать API, имея возможность вызывать его и в то же время такой возможности не имея? Ответ: вызывать API, расположение которого в памяти известно – это API в файле KERNEL32.DLL, он находится по постоянному адресу.
Вызов API приложениями выглядит приблизительно так: сall API_FUNCTION_NAME
например: call CreateFileA
После компиляции этот вызов выглядит так: db 9Ah ; инструкция call dd ???? ;смещение в таблице переходов
Код в таблице переходов похож на такой: jmp far [offset into import table]
Смещение в таблице импортируемых имен содержит адрес диспетчера для данной
функции API. Этот адрес можно получить с помощью GetProcAddress API.
Диспетчер функций выглядит так: push function value call Module Entrypoint
Рекомендуем скачать другие рефераты по теме: контрольная, использование рефератов.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата