Глава 13. Использование навесных защит
Одним из популярных способов защиты программ является использование так называемых протекторов — программных инструментов, предназначенных для зашиты других программ.
Обычно сценарий установки защиты следующий. Разработчик создает программный. продукт с использованием некоторых программных средств: виртуальных сред, компиляторов и т.д. После того как получен работающий файл, этот файл обрабатывается с помощью программы-протектора и создается новый исполняемый файл, в котором реализованы средства защиты.
13.1. Какую защиту обеспечивают протекторы
Протекторы, прежде всего, защищают программу от исследования. Исследовать можно различные области программы, но наиболее часто проводится исследование кода, причем с совершенно разными целями. Исследование вируса может проводиться с целью определения методов заражения и разработки вакцины. Исследование кода операционной системы помогает находить уязвимости, а также писать приложения, взаимодействующие операционной системой на более низком уровне. Программы исследуются с целью обнаружения недокументированных возможностей, а иногда для становления алгоритма, по которому программа функционирует. Существуют и другие причины для исследований.
Части ресурсов и данных также могут содержать некоторую интересную информацию, поэтому часто защите подвергают не только код программы, но и данные с ресурсами.
Однако защищать абсолютно все ресурсы не совсем правильно. Дело в том, основная часть ресурсов должна быть доступна только в момент выполнения программы, и такие ресурсы можно безбоязненно защищать. Но есть некоторое количество ресурсов, например информация о версии программы и ее иконка, которые могут использоваться операционной системой тогда, когда программа не запущена. И эти ресурсы в защищенной программе должны оставаться в открытом виде.
То же самое относится и к некоторым служебным структурам данных, хранящимся внутри программы и использующимся в процессе загрузки. Если эти структуры будут недоступны операционной системе, защищенную программу не удастся запустить.
Многие протекторы содержат средства, позволяющие создавать версии с ограничениями. Например, защищенная программа может прекратить работать через заданный промежуток времени, если не будет введен правильный регистрационный код или до ввода кода будет регулярно появляться окно с напоминанием о том, что программа не зарегистрирована, и с предложением приобрести лицензию.
Наиболее продвинутые протекторы имеют программные интерфейсы (API), доступные из защищаемой программы и позволяющие более четко контролировать процесс ее выполнения. Очень часто API используется для динамической разблокировки фрагментов кода, которые должны быть доступны только в зарегистрированной версии.