Russian Qt Forum
Ноябрь 22, 2024, 18:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: вопрос по поводу ограничения на распространение ПО  (Прочитано 10367 раз)
bovka
Гость
« : Февраль 01, 2010, 15:33 »

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

Над этим уже не один десяток лет бьется  куча народа...  Подмигивающий
Но пока не очень успешно, ломают все равно.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Февраль 01, 2010, 16:43 »

1) как программно ограничеть свою прогу, чтобы она запускалась 10 раз?

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

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

Сделай так что бы прога могла работать только на том компе для которго есть лицензия, бери так называемы слепок железа и если при запуске он совподает с тем что в лицензии софт запускается иначе нет, но это не панацея, и вообще вариант ушлый Улыбающийся
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #3 : Февраль 01, 2010, 16:46 »

доброго времени суток.
у меня два вопроса:
1) как программно ограничеть свою прогу, чтобы она запускалась 10 раз?
Насчтрой выделенную линию и запуская пиплов в терминальный доступ по паролю.
+ автоматический запуск твоей программы.
ограничь 10 запусками.
Улыбающийся))))))
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Akaiten
Гость
« Ответ #4 : Февраль 01, 2010, 16:56 »

Насчтрой выделенную линию и запуская пиплов в терминальный доступ по паролю.

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

Есть различные протекторы, которые более или менее позволяют защитить программу от не лицензионного использования.
Записан
bovka
Гость
« Ответ #5 : Февраль 01, 2010, 17:44 »

доброго времени суток.
у меня два вопроса:
1) как программно ограничеть свою прогу, чтобы она запускалась 10 раз?
Насчтрой выделенную линию и запуская пиплов в терминальный доступ по паролю.
+ автоматический запуск твоей программы.
ограничь 10 запусками.
Улыбающийся))))))
конечно вариант хороший, но для меня он не приемлим, так как мое ПО служит для регистации сигнала в "поле", и я думаю наврядли где нибудь на севере Якутии в тайге можно надыбать интернет=)
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #6 : Февраль 01, 2010, 20:05 »

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

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
bovka
Гость
« Ответ #7 : Февраль 02, 2010, 05:47 »

хм... а что, в этом что-то есть. спасибо большое за пишу для размышления!:)
Записан
fuCtor
Гость
« Ответ #8 : Февраль 05, 2010, 17:58 »

Сейчас модель когда продается приложение не выгодно, в последнее время популярной становится модель продажи сервиса, т.к. все равно сломают. К примеру это относится к антивирусам.
Записан
cya-st
Гость
« Ответ #9 : Февраль 05, 2010, 18:12 »

Есть такая прога как Themida (правда она платная), защита высокая у програм накрытых Themida-ой. Есть встроенные антидебагер, динамическое шифрование, виртуальные функции и т.д.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #10 : Февраль 05, 2010, 20:15 »

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

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
nsa.qt
Новичок

Offline Offline

Сообщений: 6


Просмотр профиля
« Ответ #11 : Сентябрь 21, 2020, 21:55 »

Дорогие коллеги...
Если администрация не будет возражать, прошу подчистить тему и прикрепить ее.

Ответ.

Используем: 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/qsharedmemory.html

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

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

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

Разработчик тратит средства на выпуск ПО, рекламу, доработку (обеспечивает рабочие места, нам программистам).
« Последнее редактирование: Сентябрь 21, 2020, 22:07 от nsa.qt » Записан
nsa.qt
Новичок

Offline Offline

Сообщений: 6


Просмотр профиля
« Ответ #12 : Сентябрь 21, 2020, 22:11 »

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

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

Так сейчас работают большинство софтверников рынка (кроме оборонки или гос пос стркутур), но там деньги и ответственность другие.
« Последнее редактирование: Сентябрь 21, 2020, 22:14 от nsa.qt » Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #13 : Сентябрь 22, 2020, 11:34 »

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

Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Сентябрь 22, 2020, 11:53 »

Пример описывает запуск одного экземпляра приложения от имени одного пользователя.
На линуксе данный код не от чего не защищает, легко можно будет запустить 100500 экземпляров. Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.268 секунд. Запросов: 23.