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

StackOverflow https://stackoverflow.com/questions/9504810

  •  14-11-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top