Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Азбука хакера 3. Компьютерная вирусология - Собейкис В.Г.

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 30 31 32 33 34 35 < 36 > 37 38 39 40 41 42 .. 123 >> Следующая

инфицирован.
Эта проверка выглядит так:
mov si, 10ОН mov di,OFFSET HOST mov cx,10 repz cmpsw
Если в конце этой подпрограммы флаг z будет установлен, то вирус уже
присутствует. Тогда производится следующая проверка. На современных
машинах COM-программа часто не является таковой. DOS проверяет программу
и смотрит, имеет ли она правильный ЕХЕ-заголовок (пусть даже она
именована "СОМ"), Если она имеет ЕХЕ-заголовок, DOS загружает ее как ЕХЕ-
файл. Данное обстоятельство может вызвать проблемы, если паразитический
вирус не узнает ЕХЕ-файлов. Давайте проясним этот момент.
Если паразитический СОМ-инфектор атакует файл со структурой EXE, DOS
больше не будет считать его ЕХЕ-программой, а загрузит как COM-программу.
Вирус выполнится
120
ГЛАВА 3. Сложные СОМ-инфекторы
правильно, но затем он передаст контроль не двоичной программе, а ЕХЕ-
заголовку (который является структурой данных). В результате система
может " повиснуть".
Если вы считаете, что такие программы редки и на них не стоит обращать
внимания, то я поспешу разуверить вас в этом. Примером этой формы могут
служить некоторые COMMAND.COM - файлы, с которыми не станет связываться
ни один приличный и уважающий себя вирус.
Проверка на ЕХЕ довольно простая. Нам нужно лишь посмотреть, являются ли
первые два байта "MZ". Если являются, то, вероятно, это ЕХЕ-файл, и вирус
игнорирует его.
FILE_OK совершает проверку: cmp WORD PTR
[HOSTJ.ZM' и выходит с установленным с, если данная инструкция
устанавливает флаг г. В конечном счете, FILE_OK закрывает файл, если тот
не годится для инфекции. Или оставляет его открытым с индексом в Ьх, если
его можно заразить. Он остается открытым, поэтому инфицированная версия
легко записывается обратно в файл.
Инфицирование жертвы
Если FIND FILE обнаружила пригодный для инфекции файл, начинается процесс
инфицирования. Образ зараженного файла уже находится в памяти, поэтому
вирус просто записывает его обратно на диск. Для этого он
переустанавливает указатель файла на начало файла и использует DOS-
функцию 40Н для записи зараженной жертвы в файл. Размер жертвы передается
в INFECTFILE из FILE OK в dx, а Ьх по-прежнему содержит в себе дескриптор
файла. INFECT FILE добавляет к размеру жертвы известный нам размер вируса
(OFFSET HOST-IOOH) и проводит запись из офсета 100Н в верхний сегмент:
pop сх {первоначальный размер жертвы в сх
add cx.OFFSET HOST -10ОН .добавляет к нему размер '.вируса
mov dx,100H ;старт зараженного образа
mov ah,40H ;пишет файл
int 21Н
Процесс инфицирования завершен, и мы закрываем файл.
121
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Выполнение жертвы
Теперь вирус должен выполнить первоначальную программу, к которой он
прикрепился. Новая, только что зараженная жертва, сохраняется в верхнем
сегменте, где в данный момент выполняется вирус. Оригинальная жертва была
сохранена в нижнем сегменте. Чтобы правильно выполнить жертву, нам нужно
переместиться из OFFSET HOST в 100Н, куда программа была загружена DOS в
незараженном виде.
Так как Example не знает, какой большой была первоначальная жертва, он
перемещает все из OFFSET HOST вниз стека. Этот вариант годится для любого
размера жертвы. Наш вирус должен сохранить стек, иначе возникнет сбой
системы. Затем он передает контроль жертве, используя дальний возврат.
Код будет выглядеть примерно так:
mov di, 10ОН перемещает жертву в нижнюю память mov si,OFFSET HOST
mov ax.ss ;ss все еще указывает на нижний сегмент mov ds.ax установка,
чтобы ds и es указывали туда mov es.ax
push ах ;вталкиваем в стек адрес возврата push di ;для выполнения жертвы
mov cx.sp
sub сх,OFFSET HOST ;cx = количеству байтов для
; перемещения rep movsb перемещаем жертву в офсет 10ОН retf ;и
переходим к ее выполнению
При обсуждении вируса Example мы должны обратить внимание на случай,
когда для создания верхнего сегмента не хватает памяти. При таких
обстоятельствах вирус должен переместить жертву в офсет 100Н без
выполнения в новом сегменте. Это грозит нам проблемой, потому что при
перемещении жертвы в новый сегмент он должен переписать себя (включая код
в его теле, отвечающий за перемещение).
122
ГЛАВА 3. Сложные СОМ-инфекторы
Чтобы завершить перенос и передачу контроля жертве, Example должен
вставить часть кода, которая не будет переписываться. Имеется только два
безопасных места: (1) PSP и (2) стек.
Наш вирус выбирает стек и использует следующий код:
Рис. 7. Части стека для перемещения
mov ах.ООСЗН ; помещает "ret" в стек push ах
mov ax,0A4F3H {помещает "гер movsb" в стек push ах
Затем он динамично устанавливает необходимые инструкции ниже стека:
гер movsb {переместить жертву ге ;и выполнить ее
И перемещает стек выше этих инструкций:
add sp,4
В стеке мы находим два слова.
Первое - это адрес 100Н, используемый для возврата из подпрограммы.
Второе слово является адресом подпрограммы, скрытой под стеком. Вирус
возвращается к ней, выполняет ее и затем возвращается к жертве.
Как видите, перемещение жертвы было произведено хитрым акробатическим
Предыдущая << 1 .. 30 31 32 33 34 35 < 36 > 37 38 39 40 41 42 .. 123 >> Следующая