Пробная версия программного обеспечения - ограничить количество раз использования

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

Это.NET-приложение на C#, и я изо всех сил пытаюсь найти способ реализовать это. Пробовал ключи реестра, отслеживание файлов и т. Д., Но они не очень надежны.

Буду очень признателен за помощь по этой теме.

Спасибо Рохан

1 ответ

Решение

Обычно пробный период отслеживается двумя способами: с помощью ключа реестра и веб-службы:

  • Ключ реестра: Реализуйте некоторый метод сохранения количества запусков программ в ключе в реестре Windows, возможно, с какой-то запутанностью. "Соленая" схема шифрования, в которой вы шифруете схему, содержащую ваше значение плюс некоторое машинно-зависимое значение, такое как MAC-адрес сетевой карты, вероятно, будет работать лучше; убедитесь, что ваш код сложно декомпилировать, используя что-то вроде Dotfuscator. Было бы лучше поместить ключ в местах с помощью установщика, чтобы программа могла просто воспринимать отсутствие ключа как попытку подделки.

    Затем при запуске извлеките ключ, расшифруйте и осмотрите его. Если это то, что вы ожидаете, добавьте 1 к значению, запишите его обратно в реестр, а если новое значение превышает число разрешенных запусков, заблокируйте пользователя. Если ключ реестра когда-либо имеет значение, которое вы не ожидаете (имеется в виду, что он подделан), в том числе вообще не присутствует, просто заблокируйте пользователя.

    Преимущество этого подхода заключается в том, что он обеспечивает очень надежную защиту без использования Интернета. Недостатком является то, что "машинно-зависимые" детали могут изменяться по законным причинам, и когда это происходит, ваш пользователь блокируется до того, как он использует все свои запуски, что может расстроить пользователей. Кроме того, ваша реализация для посола и шифрования присутствует на компьютере пользователя; искушенный хакер найдет способы проверить вашу программу, даже если вы запутываете код, и может обнаружить вашу реализацию и имитировать ее, чтобы "сбросить" счетчик. Это может сделать только один парень, и будет простое приложение Warez, которое позволит кому-то другому это сделать.

  • Веб-служба: внедрите службу WCF на сервере, которым вы управляете. Плотно закрепите его, поэтому единственный выход из локальной сети или ее выход из нее - через порт WCF в точности так, как ожидает WCF. Теперь внедрите клиента в вашу программу и его установщик. При установке установщик вызовет метод обслуживания, сообщающий, что программное обеспечение устанавливается на компьютер с определенным MAC-адресом или идентификатором оборудования. Если в вашей базе данных нет этого уникального компьютера, добавьте его; иначе ничего не делай. Затем при запуске программы вызовите веб-службу из вашей программы, передайте ту же информацию, и веб-служба обновит число запусков и вернет значение, сообщающее клиенту, разрешено ли запускать.

    Плюс веб-службы в том, что будет очень сложно обойтись таким образом, чтобы его можно было массово продавать через Warez; основной способ атаковать такую ​​систему - взломать сервер лицензий или же ввести "человека посередине", который может перенаправить запрос вашей программы на веб-службу на компьютер, которым он управляет. Недостатком является то, что изменения идентификатора оборудования компьютера могут по-прежнему вызывать раннюю блокировку или, что еще хуже, разрешить обходной путь, позволяя злоумышленнику просто подделать новый MAC-адрес или идентификатор оборудования, который вы никогда не видели ранее, и переустановить программное обеспечение, которое дает Пользователь запускает новый набор на "новой" машине. Есть также способы предотвратить это, но каждый добавляемый вами уровень запутывания и проверки на взлом - это еще один уровень сложности.

Что бы вы ни делали, помните правило 80/20; 80% ваших пользователей будут честны с помощью самых основных мер по обеспечению безопасности пробного процесса. 20% ваших пользователей найдут способ обойти это. Из этих 20%, 80% из них будут заблокированы любой дополнительной мерой, которую вы введете. Этот процесс рекурсивен; Дело в том, что кто-то где-то обойдет любые меры, которые вы предпримете, но если математика верна, 96% ваших пользователей просто сдаются и платят вам за полный доступ, когда сталкиваются с зашифрованным ключом реестра и запутанной программой. код. Вы можете получить это для 99,2% пользователей, добавив что-нибудь еще, например, добавив запутанный ключ чем-то специфичным для машины.

Другие вопросы по тегам