Где хранить информацию о пробной защите для защиты программного обеспечения

Возможно, он повторяется с другими вопросами, но я клянусь, что много искал и много искал в StackOverflow.com, и я не могу найти ответ на свой вопрос:

В приложении С#.Net, где хранить информацию о пробной версии защиты, такую ​​как Дата истечения срока действия, Количество использованных времен?

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

ОК, чтобы доказать, что я googled и много искал на StackOverflow.com, я перечисляю все возможные стратегии, которые я получил:

1. Запись в реестре

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

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

Хорошо, вы можете сказать, что мы должны зашифровать пробную информацию о защите, да, мы можем это сделать. Но что, если пользователь просто изменил свою системную дату перед установкой?

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

Я понятия не имею, как с этим бороться. Пожалуйста, помогите.

Обычный файл

Во-первых, есть некоторые места для размещения простого файла:

  • 2.a) простой XML файл по пути установки программного обеспечения
  • 2.b) файл конфигурации

Опять же, пользователь может просто удалить программное обеспечение и удалить эти простые файлы и переустановить программное обеспечение.

- само программное обеспечение

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

- пробный ключ продукта

Он работает как процесс лицензирования, то есть мы помещаем информацию Trial в строку, подписанную RSA. Однако для пользователя требуется слишком много шагов, чтобы попытаться использовать программное обеспечение (они могут потерять терпение):

  • 4.a) Пользователь загружает программное обеспечение;
  • 4.b) Пользователь отправляет электронное письмо для запроса пробного продукта-ключа, предоставляя имя пользователя (или электронную почту) или информацию об оборудовании;
  • 4.c) Сервер получает запрос, RSA-подписывает его и отправляет обратно пользователю;
  • 4.d) Теперь пользователь может использовать его при условии (Дата истечения срока действия и количество использованных времен).

Теперь на сервере записана пользовательская информация пользователя или информация об оборудовании, поэтому пользователь будет отклонен для запроса второй пробной версии. Является ли это законным для информации об оборудовании оборудования?

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

ПРИМЕЧАНИЕ. Этот вопрос касается не лицензирования, а места его хранения, где хранится информация TRIAL. По истечении срока пробного периода пользователь должен запросить лицензию (CD-Key/Product-Key). Я собираюсь использовать RSA-подпись (привязан к пользовательскому оборудованию)

P.S.: Мое программное обеспечение будет нацелено на китайский рынок, рынок программного обеспечения которого отличается от США. Большинство людей в Китае, они только покупают оборудование, они обычно не покупают программное обеспечение, такое как Micosoft Windows/Office (они просто используют пиратские копии). Тем не менее, какое-то профессиональное программное обеспечение, направленное на конкретную область, исследовательские люди по-прежнему готовы покупать его, если нет версии трещины или версия трещины очень сложна для установки.

Ответы

Ответ 1

Любой вариант 1 (обычный раздел реестра) или 2 (обычный файл) просто хорош. Здесь мои рассуждения:

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

Ответ 2

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

Ответ 3

Я хотел бы предложить немного другой такт.

Дайте "облегченную" версию вашего программного обеспечения. Нет пробной версии, просто очень ограниченная функциональность.

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

Проверьте дату и действуйте соответственно. Если он не существует, просто запустите его как облегченную версию.

Чтобы получить пробный ключ, вы можете указать им ввести адрес электронной почты и другую информацию, которую вы хотите вставить в свое приложение. Неразумно спрашивать, чтобы машина была подключена к Интернету для этой ограниченной части. Даже MS Office требует, чтобы вы быстро подключились к Интернету для проверки ключей. Попросите приложение связаться с вашим сервером с запросом ключа. Отправляйте им обратно ключ.

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

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

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

Теперь управление ключами - это только один аспект зла, с которым вы сражаетесь.

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

У вас может быть даже несколько методов в приложении, которые проверяют ключ по-разному. Но это другой вопрос.


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

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

Ответ 4

Можете ли вы потребовать, чтобы пользователи, использующие пробную версию, были подключены к Интернету? Если это так, попросите пробную версию связаться с сервером во время запуска, и вы можете проверить всевозможные вещи. вам не нужно беспокоиться о том, чтобы хранить вещи на компьютере пользователя или им подделывать данные или системное время.