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

Защита вновь создаваемых программ
Категория: Статьи

Ключевую информацию (будем для краткости называть ее ключ) о незараженной программе можно хранить в отдельном файле, но в этом случае существует опасность потерять дополнительный файл при копировании про¬граммы или ошибочно уничтожить его. Гораздо надежнее хранить ключ в теле самого защищаемого файла. К сожалению, его нельзя подобно вирусу пристыковать в конец файла, т.к. в случае заражения вирус изменит поля PartPag и PageCnt и мы никогда не сможем определить то место в файле, где он рас¬полагается. Вспомним, что все константы (в том числе и типизированные) создаются на этапе компиляции программы, таким образом, в файле обяза¬тельно имеется область данных, содержащая значения этих констант. Эта область в Турбо Паскалевых программах располагается в самом конце за¬гружаемой части файла (см. рис.6.2).
Следовательно, мы должны объявить в программе типизированную кон¬стант, предназначенную для хранения ключа, а затем в область файла, отве¬денную для ее размещения, поместить нужную информацию.
Каким образом отыскать в ЕХЕ-файле место, занимаемое ключом? Ко¬нечно, можно перед ним в программе разместить какую-либо типизиро¬ванную константу с характерным значением (например, заранее обуслов¬ленную текстовую строку) и затем отыскивать ее в файле. Однако такое ре¬шение вряд ли можно признать удовлетворительным: во-первых, всегда существует вероятность того, что какой-то фрагмент кодов программы со¬держит ту же цепочку байт, что и заголовок ключа; во-вторых, придется просматривать подчас большой по объему ЕХЕ—файл в поисках нужной константы. Значительно изящнее выглядит решение, основанное на точном вычислении смещения от начала файла до ключа.
Для этого нужно определить начало области данных в файле. В заголовке файла не предусмотрено никакой информации о начальном значении регистра DS, в котором хранится сегмент данных. Перед передачей управления про¬грамме загрузчик устанавливает значение этого регистра так, чтобы он ука¬зывал на начало так называемого префикса программного сегмента {PSP), а запущенная программа уже сама должна установить его надлежащим образом.
Префикс программного сегмента имеет длину 256 байт (16 параграфов) и размещается загрузчиком в оперативной памяти непосредственно перед за¬груженной программой. В PSP содержится различная служебная информация, которая может быть достаточно важной для ДОС и работающей программы (в PSP, например, хранятся параметры обращения к программе), но в нем нет указаний на содержимое регистра DS. Таким образом, найти начало области данных в файле достаточно трудно. Однако это нетрудно сделать в работающей программе-для этого предусмотрена стандартная функция DSeg, возвра¬щающая сегмент данных. Если бы программа могла получить также инфор¬мацию о сегменте PSP, с которого начинается загруженная программа, можно было бы вычислить смещение в файле от его начала до начала области данных. Такая возможность есть-функция MS-DOS с номером $62 возвращает в регистре ВХ значение сегмента PSP. Следовательно, программа должна полу¬чить значения обоих сегментов, вычислить их разницу и таким образом оп¬ределить место в файле, с которого начинается область данных.
Остается последняя проблема-как найти нужную константу. Турбо Паскаль размещает константы в области данных по мере их объявления в программе. Зная размер каждой константы и порядок их объявления, можно вычислить место размещения нужной нам типизированной константы. Однако этот метод не годится для универсальной программы защиты, так как порядок объявления констант может меняться от программы к программе. К счастью, мы можем использовать операцию получения адреса @. Результатом приме¬нения этой операции к адресу константы, выбранной в качестве ключа, яв¬ляется указатель (четырехбайтный адрес); смещение адреса, который он со¬держит, и является нужным нам смещением начала ключа относительно начала области данных.

Защита вновь создаваемых программ

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

Геоинформационные Системы (Гис) Как Средства Сбора И Анализа Геоданных
Что ваш супруга беседует около на компьютере?
Тестирование От А До Я. Часть 1 - Основополагающие Принципы И Подходы
Линейная Магнитная Запись Dlt (Dlt-V/Sdlt/Dlt-S4)
Запуск Windows
Структура 3-магистрального МП
Новые концентраторы и коммутаторы BayStack компании Bay Networks
CRT мониторы
Создание Java-приложения “HelloJava”
Государственное регулирование информатизации Украины
Основные линии развития ЭС
Производственный и технологический процессы
Про недавний случай с вирусом. Будьте осторожны
Поля элемента таблицы раздела диска
Трассировка процессов в UNIX
Четырехбитное мышление
Что Такое Кодеки И Где Их Можно Скачать
Архитектура Risc Вычислительных Ядер
Обзор Windows Vista
WordPad: Отмена и повтор последнего действия
Создание и конфигурирование сжатых дисков
Операционные системы которые могут управлять CompactPCI- компьютерами
Глобальная настройка параметров печати
Прослушивание радиостанций Интернета
Условия и предпосылки информатизации
Нарушение правил эксплуатации ЭВМ, системы ЭВМ или их сети (ст. 274 УК)
Решение функциональных и вычислительных задач средствами пакета прикладных программ MathCAD2000
Программа AntiVir
Математическая логика в технике
Микроконтроллерыне Системы
Следственный осмотр
Интегрирование модулей PADS в программную среду предприятия
Общие положения об необходимости устройств резервного копирования
Протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP)
Базовые понятия Windows
Пристрої вводу
Macromedia Dreamweaver против Майкрософт помещаемого на первой полосе
Просмотр видеодисков в формате MPEG 4 и DVD
Поиск данных по ключевым словам (WAIS)
Информация. Информационные процессы. Информационные технологии
Ада и Java
Сканеры
Компьютеры как средство общения людей
Выпущена Версия Mobile Forex 2.15: Новый Подход К Надежности И Удобству
Разбор недостатков БУОК-4
Обзор Конвертеров Для Видеофайлов
НЕМНОГО О ЛИЧНОСТНЫХ ОСОБЕННОСТЯХ КОМПЬЮТЕРНЫХ ПРЕСТУПНИКОВ
Технический аспект социальных условий и предпосылок
Краткое описание назначения и возможностей Excel
СРАВНЕНИЕ ИСКУССТВЕННОГО И ЕСТЕСТВЕННОГО ИНТЕЛЛЕКТОВ
Задача, решаемая с использованием систем управления базами данных
Математические модели
Микширование аудиодорожек
Производительность и надежность Windows Vista
Очистка очереди печати документов