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