Главная | Соглашение | Публикация статей

Заголовок исполняемых файлов
Категория: Статьи

Какую именно информацию о незараженном файле следует сохранять? Для ответа на этот вопрос необходимо знать соглашение ДОС о формате испол¬няемых файлов. Как известно, существуют два формата: СОМ и ЕХЕ. Любая программа, обрабатываемая системой Турбо Паскаль версии 4.0 и выше, может быть оттранслирована только в ЕХЕ-файл, поэтому все дальнейшие рассуж¬дения относятся именно к этому формату.
В начале ЕХЕ-файла располагается заголовок, в котором содержится вся информация, необходимая для преобразования дискового файла в готовую к работе программу. Первые 28 байт заголовка соответствуют следующей структуре данных:

Type
HeadExeType = record
Sign: Word; {Признак ЕХЕ-файла}
PartPag: Word; {Часть неполного сектора в конце файла}
PageCnt: Word; {Количество секторов, включая неполный}
ReloCnt: Word; {Количество элементов в таблице перемещения}
HdrSize: Word; {Длина заголовка в параграфах}
Minimum: Word; {Минимальный размер кучи (в параграфах)}
МахМет: Word; {Максимальный размер кучи (в параграфах)}
ReloSS: Word; {Начальное значение сегмента стека SS}
ExeSP: Word; {Начальное значение указателя стека SP}
ChkSum: Word; {Контрольная сумма всех слов файла}
ExelP: Word; {Смещение точки запуска программы}
ReloCS: Word; {Начальное значение сегмента кода CS};
TabiOff: Word; {Смещение первого элемента таблицы перемещения}
Overlay: Word; {Номер оверлея или 0 для основной программы}
End; {HeadExe}

Остальные элементы заголовка содержат так называемую таблицу пере¬мещения, предназначенную для настройки адресов загруженной программы. Таблица начинается с байта TabiOff от начала файла и содержит ReloCnt четырехбайтных элементов следующего вида:

Type
ReloTablltem = record
ItemSeg: Word; {Сегмент перемещаемого адреса}
IternOfs: Word; {Смещение перемещаемого адреса}
End;

Признак ЕХЕ-файла хранится в поле Sign в виде символов «MZ» (код $5A4D) - с этого признака должен начинаться любой ЕХЕ-файл. Поле HdrSize содержит длину всего заголовка в параграфах (участках памяти длиной по 16 байт каждый). Поля PartPag и PageCnt определяют общую длину загружаемой в память части ЕХЕ-файла по следующей формуле:
L = (PageCnt-l)*512 + PartPag - HdrSize*16
Остальная часть файла (длина ЕХЕ-файла может быть больше L+HdrSize*16) при загрузке программы не учитывается. Обычно в остатке файла, созданного системой Турбо Паскаль, (если, разумеется, есть остаток) содержится информация, используемая встроенным отладчиком, или оверлеи.
Подавляющее большинство ЕХЕ-вирусов пристыковывает свою программу в конец файла, а для того чтобы эта программа была загружена в память и ей было передано управление, изменяет поля PartPag, PageCnt, ReloCS, ExelP (адрес точки, куда передается управление после окончания загрузки) и, воз¬можно, некоторые другие поля. При таком способе внедрения общая длина загружаемой в память части файла должна составлять
ExeSize = FileSize + VirusSize,
где FileSize-полная длина ЕХЕ-файла, а VirusSize-длина программы ви¬руса. Так как в остатке фала могут храниться оверлеи (или архив для саморазгружающихся архивных программ), длина ExeSize может оказаться чрез-мерно большой, так что программа не сможет загрузиться в память или не сможет работать нормальным образом. Некоторые безграмотно написанные вирусы не учитывают это обстоятельство и быстро выдают себя, т.к. зара¬женные программы перестают работать.
Другой способ внедрения вируса-пристыковка кода вируса до начала загружаемой части программы и сразу за заголовком файла. L - загружаемая в память часть файла.
Такой способ внедрения позволяет не загружать в память весь ЕХЕ-файл, а длина загруженной программы увеличивается только на длину кода вируса. Несмотря на кажущееся преимущество такого способа, он используется дос¬таточно редко. Его реализация значительно сложнее, так как перед передачей управления основной программе вирус должен перенести 256 байт префикса программного сегмента {PSP) в конец собственного кода так, чтобы они не¬посредственно предшествовали телу программы-в противном случае будет нарушена важная связь программы с PSP или относительная адресация в самой программе.
Кроме того, в процессе заражения он должен увеличить на вели¬чину VirusSize поле IternOfs каждого элемента таблицы перемещения и абсо¬лютного адреса, указываемого этим элементом. В отличие от стандартного за¬грузчика ДОС вирусу приходится корректировать не загруженную программу, а ее файловый образ. Так как в ЕХЕ-программе средней сложности может быть несколько сотен элементов таблицы перемещения, процесс настройки таблицы вирусом приводит к заметному увеличению времени запуска про¬граммы, что может обнаружиться пользователем. На этапе размножения ви¬русы стремятся по возможности скрыть от пользователя результат своей деятельности, поэтому ЕХЕ-файлы редко поражаются вирусами, пристыкованными в начало файла.
Разумеется, существует возможность внедрения вируса непосредственно в тело исполняемой программы. Однако на практике это почти всегда означает разрушение логики работы программы, поэтому такой вирус немедленно об¬наруживается.
Анализ сказанного позволяет сделать важный вывод: практически любой существующий вирус (или вирус, который еще только будет создан!), рассчи¬танный на поражение ЕХЕ-файла, пристыковывает свой код в конец файла и изменяет его заголовок. Следовательно, для контроля факта заражения про¬граммы и ликвидации вируса необходимо где-то сохранить заголовок файла и его эталонную длину и периодически сопоставлять действительный заголовок и длину с эталонными значениями. При этом следует учитывать то обстоя¬тельство, что некоторые вирусы контролируют любое обращение к дисковым секторам, в которых расположена их программа, и «подсовывают» незараженные копии этих секторов. Такие вирусы (их называют вирусы—невидимки) вряд ли удастся обнаружить с помощью стандартного обращения к функциям ДОС. Для борьбы с ними используют прямое обращение к BIOS-прерыванию $13.

Заголовок исполняемых файлов

Статьи по теме:

Понятие: и виды следственных действий
Crm Система, Внедрение Crm Систем
Языки программирования системного уровня
Таблица разделов и логические диски
Локальные шины
Обмен данными путем перетаскивания
Защита вновь создаваемых программ
Понятие окон в WINDOWS. Типы окон. Элементы окон
Установка Системы Видеонаблюдения В Офис
Загрузка нескольких различных ОС
Алее Софтвер Создает Электронный Каталог Для Сзагс
Распределение памяти и защита
Microsoft о дате выхода Windows Vista
Спам и как с ним бороться
Защита от несанкционированного подключения к сети
Другие отличил NetWare 4.x
ПРЕДУПРЕЖДЕНИЕ КОМПЬЮТЕРНЫХ ПРЕСТУПЛЕНИЙ
Деловые игры
Классификация локальной компьютерной сети (ЛКС)
ПРИНЦИПЫ ДЕЙСТВИЯ И СТРУКТУРАЯ СХЕМА КОМПЬЮТЕРА
Модуль
Защита памяти в ЕС ЭВМ
Использование комментариев
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ - ВОПРОС О ВОЗМОЖНОСТИ ЕГО СОЗДАНИЯ
Микротравмы
Использование загрузочных дискет Microsoft
WordPad: Выделение текста кеглем шрифта
Пример разработки экспертной системы
Internet и политика
Компонентные инфраструктуры
Quod licet Jovi non licet bovi
Настройки браузера Microsoft Internet Explorer
Работа накопителя
Использование компьютеров
Прослушивание радиостанций Интернета
Изменение оформления Рабочего стола
Положение за компьютером
Мир програмного обеспечения
Уровень агентов
Консоль восстановления
Порядок формирования таблицы по своему варианту
Математическая логика в технике
Интегральные схемы
Задачи, реализуемые на квантовых компьютерах
Информационное общество: необходимость государственного
Зарождение кибернетики
Autodesk — В Softway!
ЗАЩИТА СУЩЕСТВУЮЩИХ ЕХЕ-ФАЙЛОВ
Интерфейс с Microsoft Office
Рисование произвольной линии
Ремонт & обслуживание регистратуры Windows
Устройство Netping Cooler Board Поступило На Склад Компании Зао «Лайт Коммуникейшн»
Печать фотографий через Интернет
WordPad: Отмена и повтор последнего действия
Все О Шрифтах - Использование Type1 И Truetype