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

Красивые рольшторы - roll-service.by

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

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


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

Новый вид Windows Vista
Устройство Netping Cooler Board Поступило На Склад Компании Зао «Лайт Коммуникейшн»
Обслуживание Компьютеров В Рамках Ит Аутсорсинга
Анализ содержимого CMOS-памяти
CASE-средства
Разработка и распространение компьютерных вирусов
Завершены работы по настройке нового продукта Алее Архив 3 для работы с СУБД
Аналоговые вычислительные машины (АВМ)
Интерфейс с Microsoft Office
Математическая логика в технике
РАЗВИТИЕ ИНФОРМАЦИОННОГО ОБЩЕСТВА
Государственные дотации
Требования к антивирусным программам
Микропроцессоры использующиеся в CompactPCI-системах
Использование буфера обмена
Подсистема вывода,способы логического вывода
Копирование цвета области рисунка
Концентраторы Fast Ethernet NetGear
Как выбрать CRM: Формирование short-листа CRM систем
Виртуальная память
ВЯЗКА ЖГУТОВ
Управление СКС
Объектная модель Java
Сигналы в системе UNIX
Легализация По. Цена Ошибки!
Автоматическая Генерация Осмысленного Текста Возможна?
Защита электронной почты
Использование комментариев
Отражение и дублирование сервера
Спам и как с ним бороться
Система адресов X.400
Модуль
Команды для контроллера НГМД
Основная особенность Adobe ImageStyler
Преступления в сфере компьютерной информации
Odbc Firebird Или Все Же Ole Db Драйвер?
Проигрыватель Windows Media
Подсистема оборудования
Подделка компьютерной информации
Очистка большой области рисунка
Общие положения об необходимости устройств резервного копирования
Виды работ при проектировании. Этапы и стадии разработки ЭВМ
Транзисторы
Общая характеристика компьютерной томографии
Поддержка драйвера сжатых дисков в MS DOS
Ада Августа Байрон
Где Купить Картридж С Доставкой В Офис
Российские национальные IP-сети
Пристрої, що запам'ятовують
Загрузочная запись
Экспертные системы
Подсказки програмного обеспечения и программы присоединенного филиала
Советы владельцам виртуальных магазинов
TCO
Модуль CRT