Ограничение запуска или времени выполнения программного обеспечения для оценки в C# и Windows
есть ли хорошие способы ограничить количество раз, когда приложение может запускаться или ограничивать время его использования под Windows 7 и с помощью C#?
насколько я вижу, реестр можно легко редактировать, есть программы для отчета о любом виде доступа к файлам, виртуальные машины могут быть использованы для изменения системного времени до момента установки приложения и т. д. Для каждой идеи, которую я могу придумать, есть (обычно) тривиальная работа.
Я хочу избежать требуется подключение к интернету. Т. е. Я не хочу, чтобы программное обеспечение запрашивало разрешение на запуск каждый раз с помощью хэшей и т. д.
Я вижу сторонние лицензионные системы, которые имеют такую функциональность. Если реализация этих подходов всегда хромает, как они это делают, чтобы это не было хромым?
примечание: Я не хочу "взломать" стороннюю систему. У меня уже есть собственная система лицензий, которую я хочу улучшить. Общие, правдоподобные идеи-это все, что я ищу для.
спасибо, Энди
4 ответов
Это не ответ на ваш вопрос, Просто подумай об этом. Независимо от того, насколько сложна ваша система защиты, она будет легко взломана. Даже с онлайн-проверкой он может и будет взломан, если кто-то захочет его очень плохо.
тем не менее, люди, которые хотели бы взломать вашу программу, не являются вашими клиентами, они никогда не были и никогда не будут. Если вы сделаете вашу систему защиты ubreakable (и никакая ломкая система защиты), то те люди просто не будет использовать вашу программу и найдет какую-то другую, которую они могут взломать.
с другой стороны, люди, которые являются вашими клиентами, не пытайтесь взломать его и купите оригинал. Спросите себя-действительно ли вы хотите тратить свое время, энергию и деньги на кого-то, кто не является вашим клиентом, и, вероятно, замедлить работу системы для кого-то, кто на самом деле является?
тем не менее, я считаю, вы должны сделать какую-то систему защиты, но идти с тем, что быстро и легко реализации и наименее навязчивым.
создание относительно безопасной, но простой системы лицензирования программного обеспечения-это далеко не просто. Само собой разумеется, что любая система (кроме размещения кода на защищенных серверах) может быть сломана при наличии достаточного количества ресурсов и времени. Лучшее, что вы можете сделать, - это сделать усилия, необходимые для этого, больше, чем средняя выгода.
Если вы серьезно относитесь к защите своих собственных программных активов, вам следует рассмотреть возможность использования коммерчески проверенной технологии лицензирования, а не прокатки твой собственный. Тем не менее, давайте посмотрим, как вы могли бы рассмотреть защиту в том, как вы описываете.
во-первых, вы должны понимать, что в век виртуальных машин, любой файл или запись реестра можно легко откатить. Без интерактивного компонента для процесса проверки вы не можете предотвратить этот сценарий.
то, что вы можете сделать, это такие вещи, как:
- хранить зашифрованное значение количества дней, в течение которых система использовалась - значение, которое никогда не отступит.
- храните зашифрованный счетчик, который вы уменьшаете до нуля каждый раз, когда используется система.
- сохраните зашифрованное значение последней даты / времени запуска программного обеспечения.
- храните зашифрованный хэш для остальных трех значений.
теперь у вас есть средство проверить, что эти значения согласованы и ограничивают способность кого-то вмешиваться в них. Вы также должны солить эти значения, чтобы они не могли быть легко воспроизводится.
используйте реестр, но зашифруйте запись с датой истечения срока действия. Это не является надежным, но он будет держать 75% случайных читеров.
несколько других трюков:
- храните количество используемых дней (возможно, в другом ключе reg или где-то совершенно другом), поэтому, если они откатывают часы, количество использованных дней остается неизменным.
- используйте некоторую форму соли в вашем шифровании, чтобы две программы с одинаковой датой exp имели разные ценности.
- держитесь подальше от действительно неприятных вещей, таких как запись в загрузочный сектор HD (глядя на вас Adobe) вы потеряете больше пользователей от выполнения этой практики, чем вы получите от DRM.
ключ для любой защищенной системы вы не можете доверять всему, что они контролируют. Любая система, которая не имеет интернет-проверки, вы не можете остановить их от перезагрузки виртуальной машины.
Я замечаю тенденцию, что установщики некоторых программ являются автономными клиентами загрузки для остальной части программы. Не могли бы вы использовать мета-программирование для отправки исполняемого файла, который проверяет что-то неясное (вставьте неясную вещь здесь)?