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

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

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

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

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

РАЗВИТИЕ ИНФОРМАЦИОННОГО ОБЩЕСТВА
Резервная Копия Блога На Blogspot. Утилита Blogger Backup
Канадский опыт построения информационной магистрали
Основные линии развития ЭС
ПРИНЦИПЫ ПОСТРОЕНИЯ САПР
WordPad: Выделение текста цветом
Геоинформационные Системы (Гис) Как Средства Сбора И Анализа Геоданных
Интерфейсы жестких дисков
Soa-Платформа Ijanet Бесплатно
Просмотр графики в режиме слайд-шоу
Интерфейс глобальных сетей
Что ваш ребенок делает в он-лайн?
Способы совершения компьютерных преступлений
Преимущества Мобильной Торговли
Редактирование звукового файла
Копирование данных с компакт-диска
Программирование контроллера НГМД
Лучшие Антивирусы
СПЕЦИФИКА ИНФОРМАЦИОННОГО ОБЕСПЕЧЕНИЯ САПР
Законы Безопасности
ВСТАВКА ТАБЛИЦ
WordPad: Выделение текста кеглем шрифта
Нейронный подход
Хакеры могут контролировать ПК без ведома их владельцев
Коммутаторы NetGear
Общие черты CASE-средств
Следственный эксперимент
База знаний
Открытие документа не связанным с ним приложением
Модуль
Размер шрифта и кодировка
Как Выбрать Принтер?
Дополнительные программы Microsoft Internet Explorer
ПЛОТТЕРЫ ПРЯМОГО ВЫВОДА ИЗОБРАЖЕНИЯ
Компьютер-помощник конструктора
Угрозы Безопасности Современных Сетей
Технология работы данной ЭС
Текст программы на языке Basic
Компьютеры как средство общения людей
Появление перцептрона
Контроллеры и шины
Краткий обзор модулей COSMOS/M
Допрос обвиняемого и подозреваемого
Возможность системы CompactPCI иметь более 8 слотов
Этапы решения задачи на ЭВМ
Защита данных. Роскошь или средство выживания?
Особенности драйверов PCI и CompactPCI устройств
Общие признаки преступлений в сфере компьютерной информации
Блокнот: Ведение журнала работы
Классификация ЭВМ
Заголовок исполняемых файлов
Региональные провайдеры в России
Сертификаты TCO и MPRII
Описание переменных
Элементарная теория процесса обучения нейросетей