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

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

Итак, «вакцинация» вновь разрабатываемых программ не представляет особой сложности. А как защитить уже существующую ЕХЕ-программу? Для этого существуют две возможности: либо использовать отдельную программу, которая хранит ключевую информацию и осуществляет проверку по требо¬ванию пользователя (такая программа обсуждается в следующем разделе), либо пристыковать к защищаемой программе небольшой код «вирусного фага» - тогда проверка будет осуществляться автоматически при каждом запуске программы. В этом разделе мы обсудим технику создания и внедрения в за¬щищаемую. Программу антивируса—фага, т.е. небольшой ассемблерной программы, которая использует тот же механизм перехвата управления, что и обычный вирус, но осуществляет нужную защиту программы.
Программа – фаг устанавливается специальной программой-установщиком и к моменту начала своей работы уже должна иметь в своем распоряжении эталонный заголовок файла. Получив управление, фаг проверяет заголовок соответствующего файла и, если обнаружены изменения, сообщает об этом пользователю и удаляет вирус. После окончания работы фаг передает управ¬ление защищаемой программе. Поскольку фаг пишется целиком на ассемблере, его работа протекает очень быстро без заметного замедления загрузки про¬граммы. Если Вы установите такой фаг на большую часть часто используемых программ, Ваш компьютер будет защищен очень надежно.
Чтобы правильно спроектировать фаг, нужно хорошо представлять себе механизм запуска ЕХЕ-программ. Стандартный загрузчик ДОС реализует следующую последовательность действий при запуске программы.
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 без изменения.

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

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

Редактирование звукового файла
Способы просмотра документа
Мониторы сегодня
Разновидности: Atree ADA, Janus ADA, Meridian ADA
Характеристики CASE-средств
Периферийные устройства ПК
Модуль F_Anti
Доски объявлений (USENET news)
Микроконтроллерыне Системы
Вывод специальных символов CRT
Легализация По. Цена Ошибки!
Открытие документа из Главного меню
Атака На Infinity Gb V2 2
WordPad: Вставка времени и даты
Кибернетический подход
Устройства ввода
Метрики Кода И Их Практическая Реализация В Subversion И Clearcase. Часть 1 - Метрики
Програмне забезпечення комп'ютерних мереж
Экспертные системы
Время создавать защиту
Создание сети с человеческим лицом. Прикладное обеспечение
Распределение памяти и защита
Политика ограничений Microsoft Internet Explorer
Управление Памятью Freebsd
Информационные ресурсы украинского сегмента Internet
Подсказки програмного обеспечения и программы присоединенного филиала
Контроллеры и шины
Смена поколений
Компания Lenel Интегрировала Биометрические Считыватели Нескольких Производителей В Свою Систему Контроля Доступа
Определение типа компьютера
Загрузка операционной системы
Уход За Домашним Компьютером
Программирование контроллера НГМД
ДЕЙСТВИЯ ПРИ ЗАРАЖЕНИИ ВИРУСОМ
Система программного обеспечения ЕС ЭВМ
Основная особенность Adobe ImageStyler
Отправка и получение файлов
Зачем Нам Нужен План Управления Конфигурациями? Основные Понятия И Концепции Документа
Настройка параметров видеоустройства
Прерывание INT 11h
Как Сделать Резервное Копирование Почты Mozilla Thunderbird
Мой Милый Ослик Или Настройка Emule
Сигналы в системе UNIX
Концентраторы Fast Ethernet NetGear
Технология сценариев
Перезапуск задач печати
ВСТАВКА ТАБЛИЦ
Отличительные особенности. Экспертные системы первого и второго поколения
Очистка очереди печати документов
Материнская плата
WordPad: Выделение текста кеглем шрифта
Системный реестр Windows XP
Настройка мультизагрузчика
ВЯЗКА ЖГУТОВ
Новые концентраторы и коммутаторы BayStack компании Bay Networks