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

ЗАЩИТА СУЩЕСТВУЮЩИХ ЕХЕ-ФАЙЛОВ
Категория: Статьи

Итак, «вакцинация» вновь разрабатываемых программ не представляет особой сложности. А как защитить уже существующую ЕХЕ-программу? Для этого существуют две возможности: либо использовать отдельную программу, которая хранит ключевую информацию и осуществляет проверку по требо¬ванию пользователя (такая программа обсуждается в следующем разделе), либо пристыковать к защищаемой программе небольшой код «вирусного фага» - тогда проверка будет осуществляться автоматически при каждом запуске программы. В этом разделе мы обсудим технику создания и внедрения в за¬щищаемую. Программу антивируса—фага, т.е. небольшой ассемблерной программы, которая использует тот же механизм перехвата управления, что и обычный вирус, но осуществляет нужную защиту программы.
Программа – фаг устанавливается специальной программой-установщиком и к моменту начала своей работы уже должна иметь в своем распоряжении эталонный заголовок файла. Получив управление, фаг проверяет заголовок соответствующего файла и, если обнаружены изменения, сообщает об этом пользователю и удаляет вирус. После окончания работы фаг передает управ¬ление защищаемой программе. Поскольку фаг пишется целиком на ассемблере, его работа протекает очень быстро без заметного замедления загрузки про¬граммы. Если Вы установите такой фаг на большую часть часто используемых программ, Ваш компьютер будет защищен очень надежно.
Чтобы правильно спроектировать фаг, нужно хорошо представлять себе механизм запуска ЕХЕ-программ. Стандартный загрузчик ДОС реализует следующую последовательность действий при запуске программы.
1) Создается префикс программного сегмента PSP. Обычно для этого ис¬пользуется функция ДОС $26.
2) В некоторую локальную область памяти считываются начальные 28 байт заголовка ЕХЕ-файла, соответствующие структуре данных HeadExeType.
3) Определяется размер загружаемой части файла по формуле
LengExe = (PageCnt-l)*512 + PartPag
4) Определяется файловое смещение загружаемой части:
SeekExe = HdrSize*16
5) Выбирается сегментный адрес StartSeg для размещения программы.
Обычно StartSeg = Segment {PSP) +16, т.е. программа размещается сразу за PSP, который имеет длину 256 байт (16 параграфов).
6) Считывается загружаемая часть программы в непрерывную область памяти длиной LengExe, начинающуюся по адресу StartSeg:0000.
7) Указатель файла устанавливается на начало таблицы перемещения TablOff,
8) Для каждого элемента перемещения (этих элементов ReloCnt):
• считывается элемент как два 16-битных слова IternOfs, ItemSeg;
• вычисляется ReloSeg === StartSeg+ltemOfs, т.е. сегментная часть смещения абсолютного адреса перемещаемой ссылки;
• извлекается слово по адресу ReloSeg:ltemOfs-сегментная часть пере¬мещаемой ссылки;
• к этому слову прибавляется StartSeg (осуществляется так называемая привязка сегмента);
• результат помещается обратно по адресу ReloSeg:ltemOfs.
9) Выделяется память за концом программы в соответствии со значениями
MinMem и МахМет.
10) Инициируются регистры, и запускается программа:
• регистры ES и DS получают значение сегмента, в котором располагается PSP',
• регистр АХ отражает корректность идентификаторов дисков в командной строке (при нормальном запуске содержит 0);
• SS = StartSeg+ReloSS;
• SP = ExeSP;
• CS == StartSeg^ReloCS;
• IP= Exelp;
• содержимое остальных регистров не имеет значения. Регистры сегмента кода CS и указателя инструкций IP обычно иниции¬руются следующими тремя командами:
PUSH StartSeg+ReloCs
PUSH Exelp
RETF
(команда RETF дальнего возврата из подпрограммы извлекает из стека два слова смещение и сегмент адреса перехода и помещает их соответственно в IP и CS).
Таким образом, сразу после получения управления фаг должен сохранить значения регистров АХ и DS и поместить в DS значение собственного сегмента данных. На практике сегмент данных в коротких ассемблерных программах обычно совпадает с сегментом кода, т.е. программа и данные размещаются в одном сегменте. Сегмент стека SS можно не изменять, т.к. программа-установщик фага должна позаботиться о том, чтобы стек не разрушил код самого фага, и соответствующим образом настроить ReloSS и/или ExelP. Обычно в ЕХЕ-программе начальное значение ReloSS таково, что стек раз¬мещается сразу за концом программы, т.е. в том месте, куда программа-установщик помещает "код фага. Длина стека ExeSP как правило более чем достаточна для того, чтобы работа фага со стеком не привела к разрушению кода фага, поэтому в большинстве случаев установщик оставляет начальные значения ReloSS и ExeSP без изменения.

ЗАЩИТА СУЩЕСТВУЮЩИХ ЕХЕ-ФАЙЛОВ

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

Microsoft Great Plains для клиентов в России: как найти консультанта и наиболее частые вопросы
Смена поколений
Виды пластиковых карточек
Описание построения графической схемы терминала
Шина ISA
Ремонт & обслуживание регистратуры Windows
Политика ограничений Microsoft Internet Explorer
Системы электронной почты
Дата создания или изменения файла
Следственный эксперимент
Компьютеры дома
Как Бороться С Вирусами И Троянами
Hесанкционированный доступ к информации, хранящейся в компьютере
Развитие и стандартизация структурированных кабельных систем
СРАВНЕНИЕ ИСКУССТВЕННОГО И ЕСТЕСТВЕННОГО ИНТЕЛЛЕКТОВ
Чарльз Бэббидж
Управление визуализацией
Черный Баннер - Угроза или новые технологии?
Маршрутизаторы NetGear
Языки программирования высокого уровня
Кому нужны ваши данные?..
Нейронный подход
Совместимость Windows Vista
Возможность системы CompactPCI иметь более 8 слотов
Icq И Другие: Основы Безопасности
Краткий обзор модулей COSMOS/M
Процедуры и функции модуля CRT
Мобильная Торговля Optimum - Управление Торговыми Представителями
Мышление и информация
Папка Избранное
Агрегатный принцип построения ЭВМ
Сертификаты TCO и MPRII
Структура региональной системы имен
Контроллеры жестких дисков
СПЕЦИФИКА ИНФОРМАЦИОННОГО ОБЕСПЕЧЕНИЯ САПР
Что такое кибернетика?
Электронные вычислительные машины (ЭВМ)
Определение ЭВМ как объекта конструирования
НЕКОТОРЫЕ РЕКОМЕНДАЦИИ
Первый взгляд на Windows Vista
Средства разработки
Общая характеристика преступлений в сфере компьютерной информации
Количество Интернет-Атак На Банки Продолжает Расти
Политика безопасности Microsoft Internet Explorer
Отчаянно узнать если он лежит или обжуливает?
Что Приносит Sp1 Для Windows Vista?
Следственный осмотр
Генерация сеток конечных элементов в GEOSTAR
Разработка и распространение компьютерных вирусов
Последовательный и прямой доступ
Порты контроллера НГМД
Модуль CRT
Защита электронной почты
Первичный и расширенный раздел
Загрузка операционной системы