MS-DOS для программиста


Защита программ от трассировки


Защищая свои программы от несанкционированного копирования, не следует забывать о таких средствах "взлома", как пошаговые отладчики - Turbo Debugger , CodeView , Advanced Fullscreen Debug , AT86 и т. п.

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

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

Стандартный метод обнаружения средств защиты от копирования - дизассемблирование программы установки или выполнение ее под управлением пошагового отладчика. Листинг, получаемый в процессе дизассемблирования, оказывает большую услугу при использовании отладчика, поэтому эти два средства - дизассемблирование и использование отладчика - обычно используются вместе.

Соответственно, требуются специальные приемы программирования для борьбы с дизассемблером и защиты от отладчиков.

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

При расшифровывании можно копировать участки программы в другое место оперативной памяти.

Пусть, например, программа состоит из нескольких частей. После ее загрузки в оперативную память управление передается первой части программы. Эта часть предназначена для расшифровки второй части, которая находится в памяти вслед за первой.

Задача второй части - перемещение третьей части программы на место уже использованной первой части и расшифровка ее там.

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




Начало  Назад  Вперед



Книжный магазин