Приемы защиты
Есть два способа защиты с использованием электронных ключей — автоматическая (или навесная) защита и защита при помощи функций API. В первом случае защищается исполняемый программный модуль, во втором — функции защиты встраиваются в исходный код программы.
Программно-аппаратная защита предоставляет достаточно большую свободу действий. Даже при автоматической защите можно выбирать среди имеющихся опций и, соответственно, определять свойства защищенной программы. А при использовании функций API можно реализовать любую, даже самую изощренную, модель защиты. Таким образом, единой и детально расписанной схемы построения защиты не существует. Однако есть много способов придать защите дополнительную стойкость (ниже приводятся лишь некоторые из них).
Комбинирование автоматической и API защиты
Как известно, каждый из этих видов защиты имеет свои узкие места. Но вместе они прекрасно дополняют друг друга и составляют труднопреодолимую преграду даже для опытного взломщика. При этом автоматическая защита играет роль своеобразной скорлупы, внешнего рубежа, а защита API является ядром.
Поэтому рекомендуется сначала встроить вызовы API в исходный код программы, а затем обработать исполняемый файл с помощью утилиты автоматической защиты.
API защита
При API-защите рекомендуется использовать несколько функций. Их вызовы необходимо распределить по коду приложения и перемешать переменные функций с переменными приложения. Таким образом, защита API оказывается глубоко внедренной в программу.
Обязательным является использование алгоритмов преобразования данных. Кодирование информации делает бессмысленным удаление вызовов функций API, ведь при этом данные не будут декодированы.
Эффективный прием усложнения логики защиты — откладывание реакции программы на коды возврата функций API. В этом случае программа принимает решение о дальнейшей работе спустя какое-то время после получения кодов возврата. Что заставляет взломщика прослеживать сложные причинно-следственные связи и исследовать в отладчике слишком большие участки кода.
Автоматическая защита
При автоматической защите необходимо задействовать опции защиты от отладочных и дизассемблирующих средств, опции кодирования и проверки ключей по времени. Полезно также использовать защиту от вирусов. При этом проверяется CRC участков кода, а значит файл предохраняется и от модификации.
Обновление системы защиты
После внедрения системы защиты важно не забывать о своевременном обновлении ПО для работы с ключами. Каждый новый релиз — это устраненные ошибки, закрытые «дыры» и новые возможности защиты. Также необходимо постоянно отслеживать ситуацию на рынке систем защиты и, в случае необходимости, своевременно менять систему защиты на более прогрессивную и надежную.
|