Защита программного обеспечения

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

Кто-нибудь знает хорошую схему защиты от копирования и запуска посторонними лицами?

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

Мысли?

Позже редактирование: я изменил лицензионную часть, чтобы избежать несфокусированного обсуждения.

6 ответов

Мы используем систему лицензирования PELock, она имеет расширенный API SDK, что позволяет нам настраивать модель лицензирования до мельчайших деталей.

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

#incude "pelock.h"

void FullVersionProc()
{

FEATURE_1_START

// this code runs only, if the license key has
// enabled FEATURE_1 section

FEATURE_1_END

}

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

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

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

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

Другой подход заключается в том, чтобы каким-то образом вставить идентификацию пользователя в программное обеспечение, а затем, если вы обнаружите утечку копии, вы будете точно знать, кого винить. Дайте понять пользователям, что вы сделали это, и положитесь на них, не желая, чтобы их поймали, чтобы вырезать копии. Несколько крупных игроков используют эту схему; Я думаю, что книги О'Рейли одна?

Simply Licensing предназначена для современных приложений .NET.

Автономные ключи, онлайн-ключи - вы можете создать свою модель лицензирования практически в любом случае, если захотите ее реализовать. Работает на Windows, Mac и Linux.

Этого можно достичь по крайней мере двумя способами: либо вы используете механизм проверки автономного ключа (ознакомьтесь с этой статьей: http://www.codeproject.com/Articles/764610/Licensing-systems-in-NET). или онлайн-система проверки.

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

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

Примером (2) является платформа SKM ( https://serialkeymanager.com/). Примеры приложений / алгоритмов, описанных в (1), можно найти в статье, которую я упоминал в начале.

Другие вопросы по тегам