Введение в архитектуру компьютеров


Способы увеличения эффективности и надежности защиты от копирования - часть 4


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

Один из способов затруднения работы "взломщика" при анализе работы программы – это метод использования так называемых "пустышек". В качестве их выделяются участки программы достаточно большого объема, производящие некоторые значительные вычисления, но не имеющие никакого отношения к работе программы. В "пустышки" необходимо включать какие-либо фрагменты, которые могли бы заинтересовать "взломщика". Например, это могут быть вызовы таких прерываний, как 13Н, 21Н, 25Н, 26Н, их перехват и т. п.

Принципиально новый подход к защите программного обеспечения от исследований отладочными средствами и дизассемблерами является метод динамического изменения кода исполняемого модуля. Полное изменение исполняемого кода становится возможным благодаря адекватной замене одной или нескольких команд программы другой последовательностью команд без изменения выполняемых программой функций. Например, команда MOV может быть заменена парой команд PUSH и POP, команда CALL – парой PUSH и YMP и т. д. Всегда можно организовать работу программы так, чтобы при каждом ее выполнении происходила замена исполняемых команд на эквивалентные, которые выбирались бы из специальной таблицы эквивалентных команд, хранящейся в определенном месте программы. При этом необходимо постоянно изменять и саму таблицу эквивалентных команд, переставляя в ней местами эквивалентные команды. Можно также внести в таблицу случайный признак модификации таблицы. В результате после каждого выполнения программы ее код будет изменен до неузнаваемости (случайным образом), однако все свои функции программа будет выполнять точно так же, как и раньше. Единственное, что может при этом изменяться – это время выполнения программы.




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



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