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

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

  •  12-10-2019
  •  | 
  •  

Вопрос

Это может быть дублируется с другими вопросами, но я клянусь, что я много гуглил и много ищу на Stackoverflow.com, и я не могу найти ответ на свой вопрос:

В приложении C#.NET, где хранить информацию о защите, например, дата истечения срока действия, количество времени использования?

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

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

1. РЕГИСТРАЦИЯ

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

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

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

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

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

Простой файл

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

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

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

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

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

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

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

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

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

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

Примечание. Вместо этого этот вопрос не о лицензировании, а о том, где хранить информацию о испытании. После истечения срока действия пользователь должен запросить лицензию (CD-ключ/ключ к продукту). Я собираюсь использовать подпись RSA (связанное с пользовательским оборудованием)

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

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

Решение

Любая вариант 1 (клавиша реестра простого) или 2 (простой файл) просто в порядке. Вот мои рассуждения:

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Я знаю, что это старая ветка, но я просто наткнулся на нее, и другие могут найти это полезным.

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

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