Теория и практика защиты программ


         

При этом либо блокируется работа


При этом либо блокируется работа отладчика, либо неверно преобразуется в исполняемые команды код программы.

Важной задачей защиты программ от исследований является защита от трассировки программы по заданному событию (своего рода выборочное исследование). В качестве защиты от трассировки по заданному событию (прерыванию) можно выделить три основных способов.

1.       Пассивная защита - запрещение работы при переопределении обработчиков событий относительно заранее известного адреса.

2.       Активная защита первого типа - замыкание цепочек обработки событий минуя программы трассировки.

3.       Активная защита второго типа - программирование функций, исполняемых обработчиками событий, другими способами, не связанными вызовом штатных обработчиков или обработчиков событий, которые текущий момент не трассируются.

Например, для защиты от трассировки по дисковым прерываниям для ОС MS DOS при чтении некопируемой метки с дискеты или винчестера можно использовать следующие приемы:

·        работа с ключевой меткой путем прямого программирования контроллера гибкого диска (активная защита второго типа);

·        определение одного из неиспользуемых прерываний для работы с диском (активная защита первого типа);

·        прямой вызов соответствующих функций в ПЗУ (BIOS) после восстановления различными способами их физического адреса (активная защита первого типа);

·        определение факта переопределения адреса прерывания на другую программу и невыполнение в этом случае дисковых операций (пассивная защита).

При операциях с жестким диском, как правило, используется преры­вание int 13h. Для предотвращения трассировки программы по заданному прерыванию (в данном случае прерыванию int 13h) можно также исполь­зовать указанные выше способы, а именно:

·        переопределение исходного прерывания в BIOS на неиспользуемый вектор прерывания;

·        прямой вызов функций BIOS.

При опасности трассировки по событиям операционной среды могут быть выделены следующие действия программ:

·        определение факта замены обработчиков событий на собственные функции (в частности, для защиты от отладчиков);

·        файловые операции, связанные со считываниями различных счетчиков или паролей, вычисление контрольных сумм и значений хэш-кодов;

·        файловые операции, связанные со считыванием заголовков и другой существенно важной информации в исполняемых файлах или загружаемых библиотеках.


Содержание  Назад  Вперед