antonromashka
@antonromashka
"Веб-разработка - наше все"

Как создать платную лицензию для программы на C++?

Человек открывает консольное приложение. Он должен ввести ключ. После ввода, в зависимости от ключа, ему выдается доступ ко всей программе на определенное время (то есть, какой ключ он оплатил - на такое время он получил доступ к программе). Когда время вышло, программа пишет "Оплатите новую лицензию". Я не нашел никаких похожих и нужных мне инструкций в инете и на гитхабе, поэтому если есть те, у кого имеется такой код, то буду благодарен если поделитесь!
  • Вопрос задан
  • 3220 просмотров
Пригласить эксперта
Ответы на вопрос 4
@alexalexes
1. Пользователь вводит ключ.
2. Программа отправляет ключ на ваш сервер вместе с фингерпринтом железа.
3. При первом запросе ваш сервер вписывает фингерпринт железа в профиль ключа и дату истечения действия ключа.
4. Если дата не истекла и фингерпринт не менялся по ключевым характеристикам (например, модель и серийник материнской платы), то отправляем программе ответ, что пользователь может использовать полный функционал.
Если дата истекла или существенно поменялся фингерпринт, то отправляем сообщение об ошибке.
5. Оборачиваем сообщения в асимметричное шифрование. Применяем протоколы ЭЦП - по вкусу.
Ответ написан
@v__V__v
Разработчик
Никаких похожих и нужных инструкций в инете и на гитхабе нет по одной простой причине - еще с четверть века назад выяснилось, что все это - бесполезная трата времени и денег, т.к. ломается все гораздо быстрее, чем разрабатывается и устанавливается защита. Если программа хорошая и нужная, ломают обычно в тот же день. Потому и перешли на разнообразные способы поощрения регулярной оплаты вместо проверок и блокировок. Вы и сами все это скоро так или иначе поймете)
Ответ написан
Комментировать
@EDIsaev
Даже если вы разработаете "идеальную" защиту, она работает до первой покупки, при попадании ключа в нужные руки вся защита снимается, а потратить на её разработку можно годы!...
А простенькую защиту от "дурака" вам в первом ответе описали.
Ответ написан
Комментировать
Ev3nt
@Ev3nt
Как вариант, сделать лаунчер и DLL, в которой и будет сама программа. Лаунчер отправляет запрос на сервер, где происходит проверка подлинности ключа и сроков лицензии и в случае, если всё корректно, на клиент отсылается зашифрованная библиотека (DLL), которая посредством manual map injection встраивается в память (если библиотека была зашифрована, не забудьте расшифровать), создаётся поток и производится выполнение кода.

Плюсы:
  • Обновляя библиотеку на сервере, она также будет обновляться у всех юзверей после перезапуска;
  • Взломать лицензию будет не так просто, поскольку предоставление доступа к функционалу происходит не на клиенте, а на сервере.


Минусы:
  • Постоянная загрузка с сервера;
  • Возможно, для вас будет немного сложно реализовать этот алгоритм;
  • Даже несмотря на эти ухищрения, всё равно будет возможность сдампить всё, только на это уйдёт некоторое время и силы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы