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

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

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

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

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

Работа с дисками по средствам MS-DOS
Программные оболочки MS DOS, Norton Commander
Распределение памяти и защита
Микроконтроллерыне Системы
Универсальный мультисенсор SVEA совмещает в себе датчик освещенности и присутствия
КОНСТРУКТИВНО-ТЕХНОЛОГИЧЕСКИЕ ОСОБЕННОСТИ ЖГУТОВ
Анализ развития украинского сегмента сети Internet
Компьютерные сети
Виды работ при проектировании. Этапы и стадии разработки ЭВМ
Требования, предъявляемые к техническим средствам ЭВМ
Концепция развития информационного общества в Европе
Автоматизация Делопроизводства
Использование компьютеров
Внедрение Crm Системы Sales Expert 2 В Компании «Сибаэроинж»
Ада и Java
Производственный и технологический процессы
Пути и фазы моделирования интеллекта
Доски объявлений (USENET news)
Алее Софтвер Создает Электронный Каталог Для Сзагс
Линейная Магнитная Запись Dlt (Dlt-V/Sdlt/Dlt-S4)
Рисование прямоугольника или квадрата
Access
Просмотр свойств клипа
Операционные системы которые могут управлять CompactPCI- компьютерами
Средства Защиты Компьютера И Максимальная Его Безопасность
Что такое кибернетика?
Общие черты CASE-средств
Темп развития CompactPCI
Компоненты, модули, мамботы в CMS Joomla
Алее Софтвер Приглашает На Docflow 2008!
Повышаем Права Пользователя
Области в которых используются компьютерные системы на базе CompactPCI
Использование загрузочных дискет Microsoft
Технология работы данной ЭС
Государственное регулирование информатизации Украины
TCO '95
Спрячьте ваши важные документы компьютера в секундах
Что составляет Internet?
Уровни работы сети
Накопители информации в компьютере
Интерфейс глобальных сетей
Длина файла
Электронный подход
Периферійні пристрої
Определение структурированной кабельной системы
Системы электронной почты
Что ваш ребенок делает в он-лайн?
Работа накопителя
Софт (Программы) Для Counter - Strike
Полупроводники
Нормативно-техническая документация
Критерий использования ЭС для решения задач
Открытие документа из папки
Компания Janet Systems Llc Представила Soa-Платформу Ijanet Framework Ultra На Выставке «Kitel 2008»
World Wide Web в России