Включение ограничений условного доступа в С++-программное обеспечение

Я хочу реализовать свое программное обеспечение на условно-бесплатной основе, чтобы пользователь учитывая максимальный испытательный период (скажем) 30 дней, с которого можно попробовать программное обеспечение. При покупке я намереваюсь, чтобы пользователь получил произвольно сгенерированный ключ, который при вводе снова позволяет программному обеспечению.

Я никогда не был на этом пути раньше, поэтому любые советы или отзывы или указатели на "стандартные" способы, как это делается, будут высоко оценены.

Я не ожидаю, что пользователи изменят систему, изменив системную дату или что-то в этом роде, хотя это, вероятно, стоит рассмотреть. Извините, если эта тема появилась раньше.

Ответ 1

Что касается ключа, генерируемого случайным образом, как вы проверите ключ, это будет законным или если ключ является фиктивным, если он на самом деле случайный? Взгляните на статью " Внедрение системы контроля частичного серийного номера", так как это довольно хорошо и легко реализовать на любом языке.

Что касается временных испытаний, основным решением было бы сравнить время создания основного исполняемого файла с текущим системным временем и действовать на разницу. Это предполагает, что ваш установщик устанавливает время создания файлов во время установки, а не сохраняет время, которое вы его скомпилировали!:)

Ответ 2

Если ваше программное обеспечение действительно полезно, вы обязательно найдете трещины на P2P, прежде чем вы увидите свой первый заказ. Это произойдет независимо от того, насколько сложным является код принудительного исполнения лицензии, который вы собираетесь реализовать.

Тем не менее, просто сохраните дату первого запуска где-нибудь (может быть реестр, если в Windows) и через 30 дней отказаться от запуска или просто открыть окно напоминания.

Не беспокойтесь о мошенниках, они найдут способ ограничить ваши ограничения. Беспокоитесь о своих честных клиентах и ​​старайтесь не делать их жизнь сложнее.

Эрик Синк написал об этом здесь (раздел 4).

Ответ 3

Также следите за тем, чтобы время радикально изменилось, если текущая дата волшебным образом меньше даты установки и т.д.

Один из способов обойти этот тип данных - изменить дату, прежде чем устанавливать ее в будущем. Поэтому вы должны проверить, что сегодняшний день не меньше даты установки.

Ответ 4

При первом запуске вы можете где-то сохранить фактическую дату.
При каждом следующем запуске вы ищете сохраненную дату, если она существует, вы читаете ее, если она больше 30 дней после первого запуска, вы останавливаете программу.

Ответ 5

См. эту библиотеку.

Описание:

Преобразование любого приложения в ограниченное по времени условно-бесплатное ПО. Создайте серийные номера, чтобы зарегистрировать его. Библиотека функций, предлагающая гибкую систему блокировки с надежным шифрованием. Легко реализуется. Поддержка VB, С++, Delphi, других языков.