Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритм работы резидентного COM - вируса




Несколько слов о резидентных программах

Вы, наверное, знаете, как строятся резидентные программы. В этом пункте мы немного поговорим об их организации и функционировании. Резидентными называют программы, которые после своего завершения остаются в памяти и активизируются при наступлении каких - либо событий в вычислительной системе. Такими событиями могут быть, например, нажатие "горячей" комбинации клавиш, выполнение некоторых операций с дисками и т. п. Но в любом случае программа получает управление при тех или иных условиях.

Все резидентные программы строятся одинаково, или почти одинаково, и состоят из двух секций - секции инициализации и собственно резидентной части. Резидентная часть, как правило, состоит из одной или нескольких подпрограмм - обработчиков прерываний и находится в памяти во время сеанса работы компьютера. Такие подпрограммы могут полностью подменять собой системные обработчики или только служить их дополнением.Естественно,для того,чтобы резидентная часть получила управление, необходимо заменить соответствующие вектора в таблице векторов прерываний на точки входа в заново установленные обработчики. Эту функцию и выполняет секция инициализации, которая всегда выполняется при запуске программы первой.

После перехвата прерываний, которые должна обрабатывать резидентная часть, секция инициализации завершает программу, используя для этой цели прерывание или функцию резидентного завершения MS DOS. В результате резидентная часть остается в памяти и активизируется в случаях, предусмотренных автором программы. Часть инициализации в процессе работы больше не потребуется,поэтому оставлять ее в памяти бессмысленно, и она "затирается" MS DOS в случае необходимости.

Рассмотрим один из возможных алгоритмов работы резидентного COM - вируса. По своей сути резидентный вирус отличается от обычной резидентной программы только тем, что он размножается сам по себе, независимо от желания пользователя. Значит, построить его можно по той же схеме, по которой пишутся обычные TSR - программы. Но сначала выясним, что должны делать секция инициализации вируса и его резидентная часть.

Итак:

Секция инициализации выполняет следующие действия:

  1. Получает управление при запуске зараженной программы.
  2. Проверяет, установлена ли в память резидентная часть вируса.
  3. Восстанавливает в памяти компьютера исходные три байтa этой программы.
  4. Если резидентная часть не установлена, выполняются следующие действия:
    1. Отыскивается свободный блок памяти достаточного для размещения вируса размера.
    2. Код вируса копируется в найденный блок памяти.
    3. В таблице векторов прерываний соответствующие вектора заменяются точками входа в вирусные обработчики.
    4. Выполняется переход на начало зараженной программы (на адрес CS:100h). После этого программа выполняется, как обычно.

В том случае, если резидентная часть вируса уже находится в памяти, он просто передает управление зараженной программе.

Резидентная часть выполняет следующие действия:

  1. Анализирует все вызовы системного прерывания INT 21h с целью выявить переход оператора в новый каталог или смену текущего диска.
  2. Если обнаружится смена текущего диска или каталога, резидентная часть должна:
    1. Сохранить исходное состояние вычислительной системы.
    2. Найти на диске подходящий COM - файл.
    3. Записать тело вируса в конец этого файла.
    4. Заменить первые три байта заражаемой программы командой перехода на вирусный код, сохранив предварительно исходные три байта в своей области данных.
    5. Восстановить исходное состояние вычислительной системы и передать ей управление.

Если оператор не будет менять текущий католог или диск, вирус, очевидно, ничего заразить не сможет.

Как вы уже заметили, заражением файлов занимается исключительно резидентная часть! Секция инициализации нужна только для инсталляции вируса в память. Кроме того, в отличие от обычной резидентной программы, в вирусе эта секция записывается в память вместе с резидентной частью. Иначе при записи ее в заражаемый файл возникли бы серьезные трудности.

Из рассказанного в этом пункте легко сделать вывод о том, насколько резидентный вирус должен быть устроен сложнее обычного. Вместе с тем, в его написании нет ничего магического, и вы без труда разберетесь в следующей программе.




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 827; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.