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

Шторы - calon.by

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

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


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

Математическая логика в технике
Проблема предотвращения формирования общества потребления
Рисование кривой
Сброс дисковой системы
Крэкинг (вершина айсберга)
ПРЕДУПРЕЖДЕНИЕ КОМПЬЮТЕРНЫХ ПРЕСТУПЛЕНИЙ
Основные черты NetWare 3.x - 4.x
Методика и практика расследования преступлений в сфере компьютерной информации
Очистка большой области рисунка
Численные методы, используемые в данной работе
Обыск и выемка
Прочие функции Microsoft Internet Explorer 6
Горизонтальная подсистема
Понятие окон в WINDOWS. Типы окон. Элементы окон
Ремонт & обслуживание регистратуры Windows
ТИПЫ ЛКС
Способы совершения компьютерных преступлений
Организация объектов сети
Структура СКС
Прокладка абонентских линий
Отложенная печать документов
ОС Windows Vista повысит популярность планшетных компьютеров
Понятие компьютерных преступлений
Зао «Лайт Коммуникейшн» Подтвердила Свой Статус «Microsot Gold Certified Partner» В 2008 Году
Защита памяти в ЕС ЭВМ
Маркировка + контроль вскрытия с этикетками В-367
Системный блок
Разработка Баз Данных, Взгляд Изнутри
Назначение деловых игр
Настройка интерфейса редактора Paint
Замена стандартного ядра и HAL
Работа со сжатыми дисками
МЕТОДЫ ЗАЩИТЫ ОТ КОМПЬЮТЕРНЫХ ВИРУСОВ
Области в которых используются компьютерные системы на базе CompactPCI
Предпосылки развития информационного общества в Украине
О Windows Vista
Какое сжатие файлов лучшее?
Электронная почта
Использование команд контроллера НГМД
Hесанкционированный доступ к информации, хранящейся в компьютере
Экспертные Системы
Управление выполнением программы
Структура функционирования сети
Уголовно-правовой анализ ст? 274 гл? 28 УК РФ "Нарушение правил эксплуатации ЭВМ, системы ЭВМ или их сети"
МИКРОПРОЦЕССОР КАК ОСНОВА ЭВМ
Американские проекты создания информационной супермагистрали
ЭВМ
Электронные платы
Уровень агентов
Режимы работы ЕС ЭВМ
Украинский сегмент сети Internet сегодня
Создание сети с человеческим лицом. Прикладное обеспечение
Использование комментариев
Классификация ЭВМ
Место кибернетики в системе наук