Ограничение запуска или времени выполнения оценочного программного обеспечения в C # и Windows - PullRequest
8 голосов
/ 27 сентября 2010

Есть ли какие-нибудь хорошие способы ограничить количество раз, которое приложение может запускать, или ограничить продолжительность его использования под Windows 7 и с использованием C #?

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

Я хочу избежать подключения к интернету.Т.е. я не хочу, чтобы программное обеспечение запрашивало разрешение на запуск каждый раз с использованием хэшей и т. Д.

Я вижу сторонние системы лицензий, которые имеют такую ​​функциональность.Если реализация этих подходов всегда неудачна, как они это делают, чтобы она не хромала?

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

спасибо, Энди

Ответы [ 4 ]

7 голосов
/ 27 сентября 2010

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

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

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

1 голос
/ 27 сентября 2010

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

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

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

То, что вы можете сделать, это:

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

Теперь у вас есть возможность проверить, что эти значения согласованы, и ограничить возможность подделки. Вы также должны посолить эти значения, чтобы их нельзя было легко воспроизвести.

0 голосов
/ 27 сентября 2010

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

0 голосов
/ 27 сентября 2010

Используйте реестр, но зашифруйте запись с датой истечения срока действия.Он не защищен от ошибок, но он сохранит 75% случайных читеров.

Несколько других приемов:

  1. Сохранение количества использованных дней (возможно, в другом ключе reg или где-то еще).абсолютно разные), поэтому, если они откатят время, количество использованных дней останется прежним.
  2. Используйте некоторую форму соли в вашем шифровании, чтобы две программы с одинаковой датой истечения имели разные значения.
  3. Держитесь подальше от действительно неприятных вещей, таких как запись в загрузочный сектор HD (глядя на вас Adobe ), вы потеряете от этой практики больше пользователей, чем вы получите от DRM.

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

...