Где хранить информацию о пробной защите для цели защиты программного обеспечения - PullRequest
16 голосов
/ 23 декабря 2010

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

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

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

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

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

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

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

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

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

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

Простой файл

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

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

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

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

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

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

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

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

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

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

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

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

Ответы [ 5 ]

13 голосов
/ 23 декабря 2010

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

  • Пользователи со стандартными привилегиями имеют разрешения на чтение для реестра. Если они не могут прочитать ваш ключ, значит что-то еще не так. Пользователи со стандартными привилегиями не имеют разрешения на запись в реестр, но это не имеет значения, поскольку они также не имеют разрешения на установку программного обеспечения. Другими словами, либо у пользователя будет разрешение на создание раздела реестра во время установки, либо ему все равно потребуется помощь в установке. Поэтому основные технические проблемы, которые вы подняли для раздела реестра, на самом деле не имеют значения.
  • Только не беспокойтесь о тех пользователях, которые делают такие вещи, как сброс системных часов или взломают реестр вручную, чтобы сломать ваш ключ. Позвольте мне еще раз сказать: Только не беспокойтесь о пользователях, которые сознательно принимают решение изменить свою систему значительным образом, чтобы преодолеть пробные ограничения & mdash; и не заблуждайтесь, установка системных часов или редактирование реестра являются существенными изменениями. Причина, по которой вам не стоит беспокоиться об этих пользователях, заключается в том, что они представляют ровно 0 долларов потенциального дохода . Пользователь, желающий сделать такой осознанный выбор в отношении пиратства вашего программного обеспечения, не собирается просто сдаваться и принимать решение платить за ваш продукт, если он не работает. Если они не могут получить ваше программное обеспечение бесплатно, они либо пойдут с конкурентом, либо обойдутся без него. Вы в этом, чтобы зарабатывать деньги - вы не хотите тратить время и ресурсы, пытаясь захватить продажи, которые вы не можете выиграть, или отправлять пользователей конкуренту. Поэтому основные проблемы безопасности, которые вы подняли для любого из этих вариантов, не имеют значения.
1 голос
/ 23 декабря 2010

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

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

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

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

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

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

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

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

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

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

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


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

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

1 голос
/ 23 декабря 2010

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

0 голосов
/ 28 мая 2018

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

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

0 голосов
/ 23 декабря 2010

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

...