- •Часть 1 . Com - вирусы ....................... 6
- •Глава 1 . Разработка нерезидентной
- •Глава 2 . Разработка резидентной
- •Часть 2 . Exe - вирусы ....................... 82
- •Глава 1 . Разработка нерезидентного
- •1.3 Как вирус может заразить
- •1.4 Работа вируса в
- •1.5 Начало работы ....................... 88
- •Глава 2 . Разработка резидентного
- •Часть 3 . Загрузочные вирусы ................. 143
- •Глава 1 . Разработка загрузочной
- •Часть 1 . Com - вирусы
- •Глава 1 . Разработка нерезидентной
- •1.5 Начало работы
- •1.6 Вирус получает управление
- •1.8 Запоминаем содержимое dta
- •1.9 Ищем подходящий файл
- •1.10 Читаем исходные три байта
- •1.11 Выполняем необходимые расчеты
- •1.12 Проверяем файл на зараженность
- •1.13 Заражаем com - программу
- •1.14 Восстанавливаем dta
- •1.16 Область данных вирусной программы
- •1.17 Завершаем запускающую программу
- •1.18 Текст нерезидентного com - вируса
- •1.19 Комментарии
- •1.20 Испытание вируса
- •Глава 2 . Разработка резидентной
- •2.3 Алгоритм работы резидентного
- •2.4 Заголовок вируса
- •2.5 Вирус начинает работу
- •2.6 Сохраняем регистры процессора
- •2.8 Запрашиваем блок памяти
- •2.9 Делаем вирус " незаметным "
- •2.10 Получаем вектора прерываний
- •2.11 Копируем вирусный код в память
- •2.12 Устанавливаем вектора прерываний
- •2.13 Пишем резидентную часть
- •2.14 Заражаем com - файл
- •2.15 Восстанавливаем регистры
- •2.16 Пишем обработчики прерываний
- •2.17 Обработчик Int 13h
- •2.18 Обработчик Int 21h
- •2.19 Обработчик Int 24h
- •2.20 Обработчик Int 2Fh
- •2.21 Обработчик Int 28h
- •2.22 Область данных вируса
- •2.23 Процедура идентификации command.Com
- •2.24 Завершаем программу
- •2.25 Текст резидентного com - вируса
- •2.26 Комментарии
- •2.27 Испытание вируса
- •Часть 2 . Exe - вирусы
- •Глава 1 . Разработка нерезидентного
- •1.1 Формат exe - файла на диске
- •1.5 Начало работы
- •1.6 Вирус получает управление
- •1.7 Ищем подходящий файл
- •1.8 Читаем заголовок файла
- •1.10 Заражаем exe - программу
- •1.11 Восстанавливаем dta
- •1.12 Восстанавливаем точку входа
- •1.13 Область данных вируса
- •1.14 Используемые процедуры
- •1.15 Работа завершена
- •Глава 2 . Разработка резидентного
- •2.1 Алгоритм работы резидентного
- •2.3 Как реализовать защиту от
- •2.4 Реализуем предложенный алгоритм
- •2.5 Пишем промежуточный обработчик
- •2.6 Защита от обнаружения вируса в файле
- •2.7 Несколько слов о вредных
- •Часть 3 . Загрузочные вирусы
- •Глава 1 . Разработка загрузочной
- •1.2 Понятие о загрузочных вирусах
- •1.3 Алгоритм работы загрузочного
- •1.5 Начало работы
- •1.6 Вирус получает управление
- •1.12 Используемые процедуры
- •1.13 Область данных вируса
- •1.16 Комментарии
- •1.17 Испытание вируса
2.3 Алгоритм работы резидентного
COM - вируса
Рассмотрим один из возможных алгоритмов работы ре-
зидентного COM - вируса .
По своей сути резидентный вирус отличается от обы-
чной резидентной программы только тем, что он раз-
множается сам по себе, независимо от желания поль-
зователя.Значит,построить его можно по той же схе-
ме, по которой пишутся обычные TSR - программы .Но
сначала выясним,что должны делать секция инициали-
зации вируса и его резидентная часть .
Итак :
Секция инициализации выполняет следующие действия:
1. Получает управление при запуске зараженной про-
граммы .
2. Проверяет, установлена ли в память резидентная
часть вируса .
3. Восстанавливает в памяти компьютера исходные
три байтa этой программы .
4. Если резидентная часть не установлена,выполняю-
тся следующие действия :
a.) Отыскивается свободный блок памяти достато-
чного для размещения вируса размера .
б.) Код вируса копируется в найденный блок па-
мяти .
в.) В таблице векторов прерываний соответству-
ющие вектора заменяются точками входа в ви-
русные обработчики .
г.) Выполняется переход на начало зараженной
программы ( на адрес CS : 100h ).После это-
го программа выполняется, как обычно .
В том случае, если резидентная часть вируса уже
находится в памяти, он просто передает управление
зараженной программе .
Резидентная часть выполняет следующие действия :
1. Анализирует все вызовы системного прерывания
INT 21h с целью выявить переход оператора в новый
каталог или смену текущего диска .
2. Если обнаружится смена текущего диска или ката-
лога, резидентная часть должна :
а.) Сохранить исходное состояние вычислительной
системы .
б.) Найти на диске подходящий COM - файл .
в.) Записать тело вируса в конец этого файла .
г.) Заменить первые три байта заражаемой про-
граммы командой перехода на вирусный код,
сохранив предварительно исходные три байта
в своей области данных.
д.) Восстановить исходное состояние вычислите-
льной системы и передать ей управление .
Если оператор не будет менять текущий католог или
диск, вирус, очевидно, ничего заразить не сможет .
Как вы уже заметили, заражением файлов занимается
исключительно резидентная часть ! Секция инициали-
зации нужна только для инсталляции вируса в па-
мять .Кроме того, в отличие от обычной резидентной
программы, в вирусе эта секция записывается в па-
мять вместе с резидентной частью . Иначе при за-
писи ее в заражаемый файл возникли бы серьезные
трудности .
Из рассказанного в этом пункте легко сделать вы-
вод о том, насколько резидентный вирус должен быть
устроен сложнее обычного .Вместе с тем, в его на-
писании нет ничего магического, и вы без труда
разберетесь в следующей программе .