В наш век информации и компьютеров ПО стало одним из самых ходовых товаров. Однако его, в отличие от обычных, осязаемых продуктов, как известно, довольно просто украсть. Эта проблема уже давно вынуждает программистов заботиться о защите своих разработок от нелегального копирования.
Прежде всего нужно сказать, что хакер + не сверхъестественное существо, а самый обычный человек, и если разработчик удосужится изучить методику его работы, написание эффективной защиты перестанет быть неразрешимой задачей. Как правило, хакер хорошо знает обратное проектирование (reverse engineering), но относительно плохо (по сравнению с разработчиком) + системное программирование и математику. Кроме того, он использует некоторые специфические инструменты2, с которыми разработчик обычно не знаком, и работает не с исходным, а с двоичным кодом.
Очевидно, что схема защиты должна быть рассчитана не столько на выполнение фискальных функций по отношению к рядовому пользователю, сколько на противодействие попыткам хакера вывести из строя данный фискальный функционал. Поэтому самым первым этапом в алгоритме защиты, пожалуй, стоит назвать, образно выражаясь, обнаружение хакера. Конечно, обнаружить можно не самого хакера, а инструменты, которыми он пользуется. Отсюда следует вывод: перед тем, как писать какую-либо защиту, разработчик должен выяснить, чем в данный момент пользуются хакеры (ясно, что через полгода ситуация кардинально изменится, точно так же, как и на всем рынке информационных технологий).
Как правило, защита оперирует не менее чем двумя наборами данных, полученными из различных источников (например, введенные пользователем имя и фамилия и полученный от разработчика регистрационный ключ). Чтобы определить, легально ли используется программа (или в каком режиме она используется + демонстрационном или полнофункциональном), над этими наборами выполняются определенные преобразования, и результаты затем сравниваются. Понятно, что соответствующие фрагменты кода + главный объект внимания хакера.
Довольно часто защита ПО содержит фрагмент, отвечающий за отслеживание срока пробной эксплуатации программы. Участок кода, в котором время, прошедшее с момента установки программы, сравнивается с разрешенным периодом бесплатного использования, должен защищаться с помощью методов, аналогичных рассмотренным ранее. Однако хронология защиты имеет одно дополнительное уязвимое место: хакер может модифицировать дату установки программы (или дату ее последнего запуска + это иногда практикуется для того, чтобы предотвратить, по крайней мере теоретически, действенность трюков с переводом системных часов). Ни реестр, ни файловая система не гарантируют тайну вкладов. Можно порекомендовать хранить дату в открытом или закодированном виде, например, в реестре и добавлять к ней контрольную сумму. В Windows NT имеется полезная функция RegQueryInfoKey, которая сообщает дату создания ключа реестра.
Напоследок приведу несколько несложных правил, которые позволят разработчику схимичить при создании защиты ПО.
Советуем посетить:
новая игра powerdrome русская версия, гонки купить у нас Организация свадьбы образцы свадеб.новая игра периметр. золотое издание, компьютерные игры, стратегии у нас |
 |
 |
Полезная информация |
|
|
|