Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: bovka от Февраль 01, 2010, 15:33



Название: вопрос по поводу ограничения на распространение ПО
Отправлено: bovka от Февраль 01, 2010, 15:33
доброго времени суток.
у меня два вопроса:
1) как программно ограничеть свою прогу, чтобы она запускалась 10 раз?
2) возможно ли программно ограничеть создание нескольких копий своего ПО (чтобы ушлые барыги не могли копипастом размножать прогу)?
заранее благодарю всех ответивших!


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: BRE от Февраль 01, 2010, 15:38
Над этим уже не один десяток лет бьется  куча народа...  ;)
Но пока не очень успешно, ломают все равно.


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: ecspertiza от Февраль 01, 2010, 16:43
1) как программно ограничеть свою прогу, чтобы она запускалась 10 раз?

Создай зашифрованный файл, и пиши в него количество оставшехся запусков.

2) возможно ли программно ограничеть создание нескольких копий своего ПО (чтобы ушлые барыги не могли копипастом размножать прогу)?

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


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: panAlexey от Февраль 01, 2010, 16:46
доброго времени суток.
у меня два вопроса:
1) как программно ограничеть свою прогу, чтобы она запускалась 10 раз?
Насчтрой выделенную линию и запуская пиплов в терминальный доступ по паролю.
+ автоматический запуск твоей программы.
ограничь 10 запусками.
:)))))))


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: Akaiten от Февраль 01, 2010, 16:56
Насчтрой выделенную линию и запуская пиплов в терминальный доступ по паролю.

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

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


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: bovka от Февраль 01, 2010, 17:44
доброго времени суток.
у меня два вопроса:
1) как программно ограничеть свою прогу, чтобы она запускалась 10 раз?
Насчтрой выделенную линию и запуская пиплов в терминальный доступ по паролю.
+ автоматический запуск твоей программы.
ограничь 10 запусками.
:)))))))
конечно вариант хороший, но для меня он не приемлим, так как мое ПО служит для регистации сигнала в "поле", и я думаю наврядли где нибудь на севере Якутии в тайге можно надыбать интернет=)


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: panAlexey от Февраль 01, 2010, 20:05
Тады скажу так: проблемы копирастов шерифа не туды-сюды.
ПС еще более распространенное заблуждение, что ваша программа стоит того, что-бы на нее потралили пару грамм пластика с компакт-диска....
Вот тебе совет: самое лучшее, что ты можешь сделать: поставить среднюю защиту для чесных людей и попытаться продать больше софта, чем его своруют.
или сделать покупку выгоднее кражи: регистрация пользователей и высылка им бесплатных обновлений.


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: bovka от Февраль 02, 2010, 05:47
хм... а что, в этом что-то есть. спасибо большое за пишу для размышления!:)


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: fuCtor от Февраль 05, 2010, 17:58
Сейчас модель когда продается приложение не выгодно, в последнее время популярной становится модель продажи сервиса, т.к. все равно сломают. К примеру это относится к антивирусам.


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: cya-st от Февраль 05, 2010, 18:12
Есть такая прога как Themida (правда она платная), защита высокая у програм накрытых Themida-ой. Есть встроенные антидебагер, динамическое шифрование, виртуальные функции и т.д.


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: panAlexey от Февраль 05, 2010, 20:15
Сейчас модель когда продается приложение не выгодно, в последнее время популярной становится модель продажи сервиса, т.к. все равно сломают. К примеру это относится к антивирусам.
Мое мнение таково, что - законы и защита программ пишется для добропорядочных людей.
Кому надо сломает.
Вывод: кто плачется о недостаточной защите своих программ просто достаточно ленив, что-бы их нормально продавать.


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: nsa.qt от Сентябрь 21, 2020, 21:55
Дорогие коллеги...
Если администрация не будет возражать, прошу подчистить тему и прикрепить ее.

Ответ.

Используем: https://doc.qt.io/qt-5/qsystemsemaphore.html (https://doc.qt.io/qt-5/qsystemsemaphore.html)

Пример:
Код:

    /*
     * Блок реализация повторного запуска программы, реализован как
     * кроссплатформенная составляющая из классов QT
     * *
    QSystemSemaphore semaphore("EANG41RT723PHKK1IANFGQMY", 1);  // создаём семафор
    semaphore.acquire(); // Поднимаем семафор, запрещая другим экземплярам работать с разделяемой памятью

#ifndef Q_OS_WIN32
    /* в linux разделяемая память не освобождается при аварийном завершении приложения,
     * поэтому необходимо избавиться от данного мусора
     * */
    QSharedMemory nix_fix_shared_memory("WEY247Y5U43HTFAG0H4DKH99");
    if(nix_fix_shared_memory.attach()){
        nix_fix_shared_memory.detach();
    }
#endif

    QSharedMemory sharedMemory("WEY247Y5U43HTFAG0H4DKH99");  // Создаём экземпляр разделяемой памяти
    bool is_running;            // переменную для проверки уже запущенного приложения
    if (sharedMemory.attach()){ // пытаемся присоединить экземпляр разделяемой памяти к уже существующему сегменту
        is_running = true;      // Если успешно, то определяем, что уже есть запущенный экземпляр
    }else{
        sharedMemory.create(1); // В противном случае выделяем 1 байт памяти
        is_running = false;     // И определяем, что других экземпляров не запущено
    }
    semaphore.release();        // Опускаем семафор

    // Если уже запущен один экземпляр приложения, то сообщаем об этом пользователю
    // и завершаем работу текущего экземпляра приложения
    if(is_running){
        QMessageBox msgBox;
        msgBox.setIcon(QMessageBox::Warning);
        msgBox.setText(QObject::tr("Приложение уже запущено.\n Вы можете запустить только один экземпляр приложения."));
        msgBox.exec();
        return 1;
    }
    /*
     * Завершение блока проверки повторного запуска программы
     * */

Пример рассчитан на использование в ОС WInx32 & Linx64 (MacOs и другие платформы в примере не учитывалась)
более детально можно посмотреть:
 https://doc.qt.io/qt-5/qtglobal.html (https://doc.qt.io/qt-5/qtglobal.html)
https://doc.qt.io/qt-5/qsharedmemory.html (https://doc.qt.io/qt-5/qsharedmemory.html)

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

По вопросу дополнительных инсталляций - есть только один действенный метод на текущий момент:
Регистрация (онлайн проверка) через сервер лицензий с привязкой к серийным номерам оборудования (и прочего...).

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

Разработчик тратит средства на выпуск ПО, рекламу, доработку (обеспечивает рабочие места, нам программистам).


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: nsa.qt от Сентябрь 21, 2020, 22:11
Есть такая прога как Themida (правда она платная), защита высокая у програм накрытых Themida-ой. Есть встроенные антидебагер, динамическое шифрование, виртуальные функции и т.д.

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

Так сейчас работают большинство софтверников рынка (кроме оборонки или гос пос стркутур), но там деньги и ответственность другие.


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: tux от Сентябрь 22, 2020, 11:34
Кто мешает при первом запуске сделать слепок памяти и в дальнейшем его разворачивать и передавать на него управление? Хоть 100500 раз запускай.
Ну или банальная виртуальная машина - при каждом запуске она такая же, как и была в прошлый раз.
А вообще, как уже говорилось выше, если программа ценная - украдут всё равно. Если будет клиент-серверная модель - можно снять протокол общения и просто позже общаться с программой. Для тех, кто помнит - был такой Соболь, он просто сэмулировал правильные ответы USB-свистка 1C. Да, это было давно, но на тот момент аппаратный ключ считался мега-защитой. Ключевое слово: "считался" :)


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: Old от Сентябрь 22, 2020, 11:53
Пример описывает запуск одного экземпляра приложения от имени одного пользователя.
На линуксе данный код не от чего не защищает, легко можно будет запустить 100500 экземпляров. :)


Название: Re: вопрос по поводу ограничения на распространение ПО
Отправлено: RedDog от Октябрь 03, 2020, 22:38
Цитировать
Известная рок-группа Iron Maiden придумала, пожалуй, самый оригинальный способ борьбы с пиратством – они начали давать для пиратов концерты. Турне группы прошло по странам, в которых наиболее распространено пиратство.

Директор Iron Maiden отметил, что их «ноу хау» уже более, чем удачно зарекомендовало себя: во время «пиратского» турне продажи альбомов группы возросли в десятки раз.