Операционная система MS-DOS распределит свободную память, разместит в ней свой код и данные, встроится в цепочки обработчиков прерываний и начнет свою работу. Теперь любая системная или прикладная программа, обратившись к сектору диска посредством «INT 13h», попадет в обработчик, принадлежащий вирусу.
Завершая быстрый анализ вирусного кода, давайте заострим свое внимание на вопросе: как же устроен этот обработчик? Первые же действия вирусного обработчика — сохранение кода операции и немедленная передача управления оригинальному обработчику дискового прерывания посредством «INT D3h». Таким образом, все дисковые операции, инициированные операционной системой и прикладными программами, проходят «штатно». Но после того, как дисковая операция нормально выполнится, управление вновь берет на себя вирусный обработчик. Теперь он проверяет: а какое действие, собственно говоря, было выполнено — чтение сектора, запись, форматирование дорожки или что-нибудь иное? И прежде всего его интересует, не прочитан ли в результате какой — либо дисковый сектор. И если было выполнено именно чтение, то, прежде чем выйти из обработчика прерывания и передать управление вызывающей программе, выполняется некая процедура, работающая следующим образом. Суть ее алгоритма: если обработчиком была выполнена операция чтения и в буфере с адресом ES:BX уже хранится содержимое прочитанного сектора, то вирус начинает последовательно проверять, а не совпадают ли первые байты прочитанного сектора с кодом самого вируса. И если оказывается, что по крайней мере 4 первых байта совпадают, то вирус извлекает сохраненные координаты «спрятанного» оригинального загрузчика, загружает в AH число 2 и самостоятельно выполняет это чтение в «пользовательский» буфер. Таким образом, если какая-либо программа или операционная система обратится к дисковому сектору, в котором реально «сидит» вирус, то в буфере памяти после операции чтения окажется не код вируса, а код оригинального загрузчика. Вирус на диске есть, но его невозможно увидеть!





Свежие комментарии