Пробная версия программного обеспечения – ограничение количества раз использования [закрыто]
Вопрос
Я работаю над созданием полнофункциональной пробной версии программного обеспечения.Теперь, поскольку мне не нужна пробная версия, ограниченная по времени (например, 30-дневная пробная версия) или ограниченная по функциональности, было бы неплохо использовать пробную версию «количества раз, когда пользователь может запускать программное обеспечение».
Это приложение .NET на основе C#, и я изо всех сил пытаюсь найти способ реализовать это.Пробовал ключи реестра, отслеживание файлов и т. д., но они кажутся не очень надежными.
Был бы очень признателен за помощь по этой теме.
Спасибо, Рохан
Решение
Обычно пробный период отслеживается двумя способами: с помощью ключа реестра и с помощью веб-службы:
Ключ реестра: Реализуйте какой-нибудь метод сохранения количества запусков программы в ключе реестра Windows, возможно, с какой-то обфускацией.«Соленая» схема шифрования, при которой вы шифруете схему, содержащую ваше значение плюс какое-то машинно-зависимое значение, например MAC-адрес сетевой карты, вероятно, будет работать лучше всего;убедитесь, что ваш код сложно декомпилировать, используя что-то вроде Dotfuscator.Лучше всего будет поставить ключ на место с помощью установщика, чтобы программа могла просто расценить отсутствие ключа как попытку взлома.
Затем при запуске извлеките ключ, расшифруйте и проверьте его.Если это то, что вы ожидаете, добавьте к значению 1, запишите его обратно в реестр, и если новое значение превышает количество разрешенных запусков, заблокируйте пользователя.Если ключ реестра когда-либо окажется значением, которого вы не ожидаете (то есть они подделали его), в том числе вообще не присутствует, просто заблокируйте пользователя.
Преимущество этого подхода в том, что он обеспечивает очень надежную защиту без необходимости использования Интернета.Обратной стороной является то, что «машинно-зависимые» данные могут измениться по законным причинам, и когда это происходит, ваш пользователь блокируется до того, как он использовал все свои запуски, что может расстроить пользователей.Кроме того, ваша реализация соли и шифрования присутствует на компьютере пользователя;у опытного хакера будет возможность изучить вашу программу, даже если вы запутаете код, и он сможет обнаружить вашу реализацию и имитировать ее, чтобы «сбросить» счетчик.Это сможет сделать только один парень, и будет простое приложение Warez, позволяющее сделать это любому другому.
Веб-сервис:Реализуйте службу WCF на сервере, которым вы управляете.Плотно зафиксируйте его, чтобы единственный способ войти или выйти за пределы вашей локальной сети — через порт WCF именно так, как ожидает WCF.Теперь реализуйте клиент в своей программе и его установщик.При установке установщик вызовет служебный метод, сообщающий, что программное обеспечение устанавливается на компьютер с определенным MAC-адресом или идентификатором оборудования.Если в вашей базе данных нет этой уникальной машины, добавьте ее;иначе ничего не делай.Затем при запуске программы вызовите веб-службу из вашей программы, передайте ту же информацию, и веб-служба обновит количество запусков и вернет значение, сообщающее клиенту, разрешен ли ее запуск.
Преимущество веб-сервиса в том, что его будет очень сложно реализовать таким образом, чтобы его можно было массово продавать через Warez;Основной способ атаковать такую систему — взломать сервер лицензий или подключить «человека посередине», который сможет перенаправить запрос вашей программы на веб-сервис на компьютер, которым он управляет.Обратной стороной является то, что изменения в идентификаторе оборудования компьютера по-прежнему могут вызывать ранние блокировки или, что еще хуже, позволяют найти обходной путь, позволяя злоумышленнику просто подделать новый MAC-адрес или идентификатор оборудования, который вы никогда раньше не видели, и переустановить программное обеспечение, которое дает пользователь новый набор запускает на «новой» машине.Есть способы предотвратить это, но каждый добавляемый вами уровень запутывания и защиты от взлома — это еще один уровень сложности.
Что бы вы ни делали, помните правило 80/20;80% ваших пользователей будут честными благодаря самым элементарным мерам по обеспечению безопасности пробного процесса.20% ваших пользователей найдут способ обойти эту проблему.Из этих 20% 80% окажутся в тупике из-за любых дополнительных мер, которые вы примете.Этот процесс является рекурсивным;Дело в том, что кто-то где-то ОБОЙДЕТ любые введенные вами меры, но если математика верна, 96% ваших пользователей просто сдадутся и заплатят вам за полный доступ, столкнувшись с зашифрованным ключом реестра и запутанной программой. код.Вы можете добиться этого для 99,2% пользователей, добавив что-нибудь еще, например, добавив в запутанный ключ что-то специфичное для машины.