Russian Qt Forum

Программирование => Общий => Тема начата: spectre71 от Июнь 01, 2009, 08:25



Название: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 01, 2009, 08:25
Нужен механизм поддержки Trial версии.
1) Expired по кол-ву дней после первого запуска
2) Expired по дате
Не должно влиять переставление системных часов.

Подскажите, может есть для QT какая-либо библиотека (платная или бесплатная) или
может в самом QT что есть.


Название: Re: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 01, 2009, 09:35
Для начала можно сузить задачу.
Как надежно определить текущее время (может используя какие либо системные файлы), учитывая что
пользователь мог переставить системные часы. C точностью до 12 часов.
  1) Под Windows
  2) Под всеми платформами.


Название: Re: Trial версия программы. Защита.
Отправлено: lit-uriy от Июнь 01, 2009, 09:53
1) как вариант смотреть дату kernel32.dll, только непонятно как от неё вытанцовывать.


Название: Re: Trial версия программы. Защита.
Отправлено: kirill от Июнь 01, 2009, 11:21
Сам шароварщег и тема тоже интересует.
Пока не могу сходу сказать как определить - может быть из инета?
Я в своих программах применял количество запусков, так проще.
Но попробуем придумать со временем.
Есть такая идея - прошерстить все! файлы на С и найти самый свежий. Можно шерстить очень быстро, например есть прога SearchGT она ище очень быстро и вроде как SDK собираются выставлять.
Затем смотреть системную дату - если она меньше чем дата самого свежего файла то format C:

А вот еще такой финт - в инсталлятор пакуем файл со свежей датой (раз в 12 часов передлывать придется :)))
Инсталлятор ныкает файл в надежное место, а мы потом при запуске глядим его. ПРавда это легко мониторинся FileMon.


Название: Re: Trial версия программы. Защита.
Отправлено: UVV от Июнь 01, 2009, 11:34
Предлагаю не выёживаться, а сделать демо-версию.


Название: Re: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 01, 2009, 12:54
Сам шароварщег и тема тоже интересует.
Пока не могу сходу сказать как определить - может быть из инета?
Я в своих программах применял количество запусков, так проще.
Но попробуем придумать со временем.
Есть такая идея - прошерстить все! файлы на С и найти самый свежий. Можно шерстить очень быстро, например есть прога SearchGT она ище очень быстро и вроде как SDK собираются выставлять.
Затем смотреть системную дату - если она меньше чем дата самого свежего файла то format C:

А вот еще такой финт - в инсталлятор пакуем файл со свежей датой (раз в 12 часов передлывать придется :)))
Инсталлятор ныкает файл в надежное место, а мы потом при запуске глядим его. ПРавда это легко мониторинся FileMon.

1) Через инет неприемлемо.
2) Через инсталятор не имеет смысла - всегда можно переинсталировать.
    Тем более собирать раз в 12 часов - увольте.





Название: Re: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 01, 2009, 12:57
Предлагаю не выёживаться, а сделать демо-версию.

А что ты имеешь ввиду под демо-версией?
Собственно Trial - это тоже демо-версия.


Название: Re: Trial версия программы. Защита.
Отправлено: kirill от Июнь 01, 2009, 13:29
Демо этогда вместо функции "форматировать диск" высткакивает сообщение "А нету этой функции в демо"
А триал это пробная в ней все функции, но лимит по времени или количеству запусков.


Название: Re: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 01, 2009, 13:57
Демо этогда вместо функции "форматировать диск" высткакивает сообщение "А нету этой функции в демо"
А триал это пробная в ней все функции, но лимит по времени или количеству запусков.
Это демо с ограничением функциональности.
триал - тоже разновидность демо - ограничение по времени или кол-ву запусков.
триал может иметь ограничение функциональности, но очень редко.

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

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

Если интересно что за программа - ссылка в подписи.


Название: Re: Trial версия программы. Защита.
Отправлено: UVV от Июнь 01, 2009, 18:48
Там по ссылке инсталляторы только под винду.
Цитировать
Мне не нужна защита от хакеров, сломать можно любую защиту.
Но переинсталяция программы или простое удаление каких-либо файлов или замена их на начальные не должны сбрасывать триальность.

Два предложения противоречат друг другу =)


Название: Re: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 01, 2009, 19:09
Там по ссылке инсталляторы только под винду.
Я для этого и переделываю все на QT(та версия писалась на C++ Builder).
Сначала выйдет под Windows на QT.
Затем под Linux & Mac.
Сразу сделать трудно. Самая большая проблема запуск процессов. QProcess - примитивен, для моей задачи.

Два предложения противоречат друг другу =)
Ну и в чем противоречие. Пожалуйста поподробнее.


Название: Re: Trial версия программы. Защита.
Отправлено: kirill от Июнь 02, 2009, 05:47
1) как вариант смотреть дату kernel32.dll, только непонятно как от неё вытанцовывать.
лучше взять pagefile.sys

Еще можно обратиться к протоколам событий. Там дата сохраняется.


Название: Re: Trial версия программы. Защита.
Отправлено: UVV от Июнь 02, 2009, 15:09
Ну и в чем противоречие. Пожалуйста поподробнее.
Хотя бы в том, что "сломать можно любую защиту".
Сначала выйдет под Windows на QT.
Затем под Linux & Mac.
Сразу сделать трудно.
imho, потом будет ещё труднее.


Название: Re: Trial версия программы. Защита.
Отправлено: SASA от Июнь 02, 2009, 16:02
А может кто-нибудь посоветовать чё почитать по поводу триальных версий. Их струтура, защита от простейших взломов, как и где хранить данные о регистрации? А то идей много, а то как их просто реализовать мало:(


Название: Re: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 02, 2009, 18:41
Цитировать
Мне не нужна защита от хакеров, сломать можно любую защиту.
Но переинсталяция программы или простое удаление каких-либо файлов или замена их на начальные не должны сбрасывать триальность.
Два предложения противоречат друг другу =)
Ну и в чем противоречие. Пожалуйста поподробнее.
Хотя бы в том, что "сломать можно любую защиту".

Советую почитать учебник по "Математической логике" и разобраться что такое противоречие.

1) Мне не нужна защита от хакеров, сломать можно любую защиту.
   У нас система расчетных задач(биоинформатика). Клиенты 99% - западные.
   Пользоваться ломаной программой они не будут - не смогут опубликовать результаты исследований с применением нашего пакета.

2) Но переинсталяция программы или простое удаление каких-либо файлов или замена их на начальные не должны сбрасывать (Trial).
  А вот смухлевать с Trial могут практически все. Самое простое переинсталировать (почистив мусор от предыдущей инсталяции). И/Или переставить время.
Здесь "хакерских" навыков не нужно. Это может сделать любой нормальный юзверь.

Кому не нужена система - не купит, а вот те кому нужна вполне могут потянуть время и попользоваться Trial версиями. Вот это и надо ограничить.




Название: Re: Trial версия программы. Защита.
Отправлено: mugabe от Июнь 03, 2009, 10:12
Если не собираетесь специализироваться на защите ПО, а ваши продукты узкоспециализированы - то не стоит вообще заморачиваться с придумыванием каких-то хитрых защит.
Если вы этот вопрос не изучите досканально, то вашу программу какую бы защиту вы не придумали сами - сломают за считанные минуты. Воспользуйтесь готовыми решениями для защиты ПО.
Если вы хотите изучить этот вопрос детальнее, то это явно не тот форум, на котором можно всесторонне обсудить защиту.

В любом случае вам на wasm.ru и cracklab.ru - там огромное кол-во информации и софта на эту тему.


Название: Re: Trial версия программы. Защита.
Отправлено: Karl-Philipp от Июнь 05, 2009, 18:25
Как вариант можно защитить своё ПО на юридическом уровне.

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

Что скажете?


Название: Re: Trial версия программы. Защита.
Отправлено: lit-uriy от Июнь 05, 2009, 19:58
надо сначало факт выявить, потом причастность конкретного покупателя ...

Да и цель другая - время эксплуотации ознакомительной версии.


Название: Re: Trial версия программы. Защита.
Отправлено: Karl-Philipp от Июнь 05, 2009, 20:02
надо сначало факт выявить, потом причастность конкретного покупателя ...
Рано или поздно факт незаконной перепродажи/дарения узкоспециализированной программы обязательно всплывёт. Перестраховаться с помощью составления договора с конкретными ограничениями для конкретного пользователя по-моему было бы неплохо.


Название: Re: Trial версия программы. Защита.
Отправлено: spectre71 от Июнь 08, 2009, 19:32
Рано или поздно факт незаконной перепродажи/дарения узкоспециализированной программы обязательно всплывёт. Перестраховаться с помощью составления договора с конкретными ограничениями для конкретного пользователя по-моему было бы неплохо.
Договор на продажу есть, и то, о чем вы пишите не имеет смысла, поскольку речь идет о "TRIAL" версии. Ни какие договора в этом случае не предусматриваются


Название: Re: Trial версия программы. Защита.
Отправлено: sy от Июнь 27, 2009, 08:09
Предлагаю вот какой вариант:
1) Не триал версия никаких защит в себе не содержит. А вот триал будет работать только при наличии подключения к интернет (следует оформить как ограничение триал версии, типа хотите халявы будте добры к инету подключитесь).
2) На простиньком хостинге (для надежности можно на двух, но придется реплицировать таблицу триалов) размещается php скрипт + отдна таблица в mySQL с парами ID - время экспайред триала (таблица триалов). На запрос от триальной программы (содержит ID инсталляции продукта и обязательно _версию_ защиты продукта) он отвечает текущим временем и блоком инициализации критичных переменных.
Итого: без доступа к сайту прогамма не будет верно работать + никакой платформозависимости.
Чтобы труднее было сломать, можно накрутить систему свой-чужой, которая шифрует данные обмена со скриптом.


Название: Re: Trial версия программы. Защита.
Отправлено: break от Июнь 28, 2009, 02:53

Цитировать
Как вариант можно защитить своё ПО на юридическом уровне.

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

Что скажете?

ВаЩЕ Бред. Для всех ломанных программ которыми пользуется пол мира есть лицензионное соглашение в котором оговаривается запрет на использование без купленной лицензии. Вообще ели бы было все так просто - типа сделал документ и все послушались - то мы бы жили в идеальном мире без бандитизма, криминала, воровства и т.д.

Цитировать
Воспользуйтесь готовыми решениями для защиты ПО.
Вот это интересный вариант - и я вам предложу использовать электронный ключ для защиты своей программы. Например триальная версия будет идти без ключа а настоящая с ключом. Или обе с ключом и тогда дату запуска в ключе хранить.
Правда в этом смысле вам правильно предложили сделать не триал версию а Демо. Например Демо версия - половина функций нет - но идет без ключа. Полная - есть все но без ключа хрен запустишь (если купите хороший ключ и программа нужна узкому кругу пользователей то стандартными ломалками не сломать т.к. ключи стали умными, суют хлам в свой протокол обмена, используют разные алгоритмы для одних и тех же результатов и т.д. - вообще можно уникальный ключ заказать).
Так как вы сказали что наличие интернета для триал не вариант - то скажу 100% - триал будет превращаться ЛЯГКО в полную версию в засисимоти от умности местного сис. админа. Хоть в 50 местах в системе сохраняй дату установки - один хрен я за 5 мин. накачу образ системы до программы, установлю ее заново и получу еще 30 дней. Раз в месяц устанавливать систмеу - не вопрос - а из образа хоть раз в день. А вот если действительно использовать интернет - то можно прищучить. Во первых есть сервера с которых берется точное время, во вторых можно на своем сервере обслуживающем триал версии регить экземпляры программы выдавая им определенный код, и составить табличку - код экхемпляра --> дата установки. Можно привязываиться к айпишнику, можно просто напечатать определенное число дисков с триал на конверте каждого свой уникальный код, можно код генерить - вариантов масса - но только через инет.

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

http://www.guardant.ru/ - один из вариантов ключей - Московская фирма. Ключи поддерживают счетчики, алгоритмы и всякую разную хрень вам должно хватить. Пользовался сам работая в одной фирме, проблем с консультациями и гарантией не наблюдалось.


Название: Re: Trial версия программы. Защита.
Отправлено: Igors от Август 11, 2009, 03:08
Добрый день

Да, это всегда большая PITA

1) Есть программы для кодировки/перемешивания exe/dll. Например. я использовал ACProtect (хотя это было довольно давно). Это конечно, не решение, но крови они взломщику попортят, забить пару команд nop'ами уже не получится.

2) По поводу trial идей нет. Сидеть с неправильной датой весьма неудобно, этого можно не очень опасаться. Но вот откатить назад реестр или даже просто раз в месяц переставить систему.... Борьба с этим означает еще одну работу для Вас - и довольно большую. И для каждой платформы. Не лучше ли вместо этого предложить демо, без всякой защиты, но например, с отрезанной записью в файл?

3) Сама защита.  При отсутствии hardware key я использовал:

а) В главном окне показываю имя пользователя и его мейл. Хочет шерить - пусть шерит.

b) Привязка к computer name. Читать не напрямую а через GetProcAddress (взятый ранее) и строку-имя функции не светить.

с)  Выглядит глупо но зато хорошо работает: послать ID копии по udp. Если в сети обнаружено 2 или более запущенных копии - валить всех. Сидеть без сети и/или TCP/IP можно, но никто не хочет.



Название: Re: Trial версия программы. Защита.
Отправлено: max1983 от Август 27, 2009, 19:50
А при каждом запуске лезть в нет и проверять по базе сколько дней осталось?
Хотя всегда можно подделать трафик. Но если трафик шифруется на основании рандом именно клиента, тогда надо еще клиента ковырять. Хотя что-то рандом сервер сгенерит а что клиент.