Хорошо, раз пошла такая тема, расскажу немного подробней о других способах защиты.
При генерации серийных номеров привязываются к оборудованию конкретного компьютера, на котором устанавливается программа. Каждое устройство компьютера (процессор, жесткий диск, видеокарта и т.д.) имеет свой уникальный идентификатор, который оно сообщает операционной системе для подключения нужных драйверов. Пользовательская программа может получить этот код и использовать его как основу для дальнейшей работы. Например, берется идентификатор жесткого диска Volume ID при помощи функции GetVolumeInformation(), к нему применяется криптографическая хэш-функция для вычисления идентификатора компьютера. Вместе с программой должен идти открытый ключ. Соответствующий закрытый ключ имеет только автор программы. Пара ключей может быть для каждого клиента своей, а может быть и одинаковой для всех пользователей, не суть важно. Если одинаковая, то открытый ключ не поставляется, а присутствует в коде самой программы.
Процесс регистрации следующий: пользователь получает идентификатор своего компьютера (результат работы описанной выше хэш-функции) и отсылает его автору программы. Автор (или продавец) программы зашифровывает его при помощи своего закрытого ключа, получая таким образом уникальный серийный номер и отсылает его обратно клиенту. Клиент вставляет серийный номер в отведенный для этого параметр в настройках.
Как проверяется полученный серийный номер на стороне клиента. Для этого точно также берется идентификатор устройства, вычисляется хэш-функция и сравнивается с результатом расшифровки серийного номера при помощи открытого ключа. Если совпало - значит серийный номер правильный и можно разрешать работать. Как раз эта часть алгоритма и является целью взломщиков, которые попробуют сделать так, чтобы проверка считала правильным любой серийный номер.
Достоинство такого метода в том, что не нужно для каждого клиента выполнять компиляцию советника. Достаточно иметь программу для генерации серийного номера с использованием закрытого ключа.
Но для клиента этот способ защиты, конечно же, неудобен. При изменении параметров компьютера (замене диска, процессора), при переносе программы на другой компьютер или VPS необходима новая регистрация.