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

Шторы - calon.by

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

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


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

Обмен данными через файл-фрагмент
Социальные последствия информатизации
Использование комментариев
SHADOW MASK
WordPad: Выделение текста кеглем шрифта
Дата создания или изменения файла
Ваш подросток безопасно использует интернет?
Программа 1С Управление Торговлей 8
Почему работа за компьютером наносит вред здоровью человека
Анимация На Рабочем Столе Вашего Компьютера
Системный реестр Windows XP
Полезные советы - программа Picasa
Российские национальные IP-сети
Кредитные карты и Internet
Международная сеть INTERNET
Новые возможности поиска софта
Физические аспекты работы с дисками
Электронная почта (e-mail)
Windows Vista: Когда Кончается Место На Диске
Понятие: и виды следственных действий
Робот Tartalo Стучится В Вашу Дверь
Реализация кабельной системы
WordPad: Вставка времени и даты
Защита электронной почты
Рабочий стол Microsoft Windows XP
Internet и первичные телекоммуникационные сети Украины
Персональный компьютер
Геоинформационные Системы (Гис) Как Средства Сбора И Анализа Геоданных
Софт (Программы) Для Counter - Strike
Защита памяти в ЕС ЭВМ
Локальные средства (ERwin, BPwin, S-Designor, CASE.Аналитик)
Hесанкционированный доступ к информации, хранящейся в компьютере
Краткие сведения о кодировках кириллицы
Устройства ввода
Логический номер сектора
Малогабаритные 3U формата CompactPCI контроллеры INOVA
Средства разработки
Как работает вирус
Кибернетика – наука ХХ века
Почтовые псевдонимы
Экспертные Системы
Проект СКС
Отчаянно узнать если он лежит или обжуливает?
Схема бесплатного ускорения Интернета
Политика безопасности Microsoft Internet Explorer
Создание Java-апплета “HelloJava”
ПРЕСТУПЛЕНИЕ В СФЕРЕ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ
Архитектура Risc Вычислительных Ядер
WordPad: Выделение текста цветом
Стримеры
Микропроцессоры использующиеся в CompactPCI-системах
Сброс дисковой системы
Системные и локальные шины
Работы ученых
Протокол Internet (IP)