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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 45 46 47 48 49 50 < 51 > 52 53 54 55 56 57 .. 123 >> Следующая

инфицируют только- COM-файлы, а COM-файлы не очень популярны в наше
время. Мы использовали их в качестве наглядных инструментов для изучения
базовых приемов вирусмейкерства ("Искусства сотворения живых
инфосуществ"), Чтобы соответствовать запросам текущих дней, вирусы
должны, как минимум, заражать ЕХЕ-программы.
Сейчас мы обсудим вирус Intruder-B, который инфицирует ЕХЕ-программы.
Intruder-B не является резидентным. Он не прыгает по директориям. Так что
если вы хотите экспериментировать с ЕХЕ-вирусами без нанесения вреда
своей машине, эта "зверушка" - как раз то, что вам нужно.
ЕХЕ-вирусы гораздо сложнее СОМ-инфекторов, потому что ЕХЕ-файлы сложнее
COM-файлов. Для инфицирования программы вирус должен правильно
манипулировать структурой ЕХЕ-файла. К счастью, она не такая уж и
сложная.
194
ГЛАВА 5. Инфекция EXE-файлов
Структур* ЕХЕ-файла
Рис. 10. Структура ЕХЕ-файла
ЕХЕ-файл позволяет DOS выполнять программы, которые требуют более 64 К
кода, данных и стека.
При загрузке ЕХЕ-файла DOS не делает предположений о размере файла,
количестве сегментов, о коде и данных.
Вся эта информация хранится в самом ЕХЕ-файле - в ЕХЕ-загаловке, который
размещается в начале файла.
Этот заголовок имеет две части: часть с фиксированной длиной и
нефиксированную по длине таблицу указателей на сегментные ссылки
(Relocation Pointer Table - таблицу указателей перемещений),
расположенную в загрузочном модуле.
Поскольку вирус, атакующий ЕХЕ-файлы, должен манипулировать данными в
ЕХЕ-заголовке, нам нужно изучить структуру ЕХЕ-файла (см. рис. 11).
Значение каждого байта в заголовке наглядно объясняется в таблице 7.
Когда старушка DOS загружает ЕХЕ-файл, она использует таблицу указателей
перемещений (Relocation Pointer Table) и модифицирует все сегментные
ссылки в загрузочном модуле. Затем сегментные ссылки в образе программы
загружаются в память в локации, на которые они указывают.
Рассмотрим пример. Представим ЕХЕ-файл с двумя сегментами. Сегмент в
начале загрузочного модуля содержит дальний вызов ко втз? )му сегменту.
195
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
В загрузочном модуле это может выглядеть следующим образом:
Адрес Язык Ассемблера Машинный код
0000:0150 CALL FAR 0620:0980 9А 80 09 20 06
Исходя из этого можно сделать вывод, что начало второго сегмента будет
находиться за 6200Н (- 620Н х ЮН) байтов от начала загрузочного модуля.
Таблица указателей перемещений содержит вектор 0000:0153, указывающий на
сегментную ссылку (20 06) этого дальнего вызова.
Когда DOS загружает программу, она загружает ее, начиная с сегмента
2130Н, потому что DOS и некоторые программы, являющиеся резидентами
памяти, занимают локации ниже этого значения.
Поэтому DOS сначала загружает загрузочный модуль в локацию памяти
2130:0000.
Затем она берет указатель перемещения 0000:0153 и преобразует его в
указатель 2130:0153, который указывает на сегмент дальнего вызова в
памяти.
Затем DOS добавляет 2130Н к слову в этой локации, что в машинном коде
дает результат 9А 80 09 50 27 или call far 2750:0980 (см. рис. 11).
Отметим, что СОМ-программа не требует такой акробатики, поскольку не
содержит сегментных ссылок. То есть DOS просто устанавливает все
сегментные регистры на одно значение и затем передает контроль программе.
196
ГЛАВА 5. Инфекция ЕХЕ-файлов
В RAM
Рис. 11. Загрузка EXE в память
197
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
ТЗабл. 7. Формат ЕХЕ-заголоака
Офсет Размер Имя Описание
0 2 Сигнатура (подпись) Эти байты в каждом ЕХЕ-файлс являются
символами М и Z. Они идентифицируют файл, как ЕХЕ-файл. Если они другие,
DOS обращается с файлом как с СОМ-файлом.
2 2 Размер последней страницы Фактическое количество байтов в
последней 512-байтовой странице файла (см. счет страниц).
4 2 Счет страниц Число 512-байтовых страниц в файле. Последняя
страница может быть заполнена частично, с числом байтов, определенных
размером последней страницы. Например, файл в 20S0 байтов будет иметь
счет страниц = 5 и размер последней страницы = 2.
6 2 Записи таблицы перемещен нй Количество записей в таблице
указателей перемещений.
8 2 Параграфы заголовка Размер заголовка ЕХЕ-файла в 16-
байтовых параграфах, включая таблицу перемещений. Заголовок по длине
всегда является множеством 16-байтовых частей.
ОАН 2 M1NALLOC Минимальное число 16-байтовых параграфов памяти,
которое программа требует для своего выполнения. Это является дополнением
к образу программы, сохраненному в файле. Если требуемая память не
доступна, DOS при попытке загрузить программу возвращает ошибку.
198
ГЛАВА 5. Инфекция ЕХЕ-файлов
осн 2 MAXALLOC Максимальное число 16-байтовых параграфов
назначаемых программе при ее выполнении. Часто компьютер настраивает это
значение до FFFF Hex.
ОЕН 2 Первона- чальный SS Здесь содержится первоначальное
значение сегмента стека относительно начала кода в ЕХЕ-файле, когда файл
загружается. После загрузки файла оно перемещается DOS и отражает
значение, сохраняемое в регистре ss.
Предыдущая << 1 .. 45 46 47 48 49 50 < 51 > 52 53 54 55 56 57 .. 123 >> Следующая