Здравствуйте, Basil2, Вы писали:
B>За нормальных покупателей я не переживаю. Но кто-то нехороший может купить одну лицензию, расшарить ее и под ней, меняя дату на компе, смогут сидеть сколько угодно человек и сколько угодно долго.
Я не шароварщик, а обычный пользователь, но выскажу несколько мыслей.
1) Нет смысла радикально бороться с теми кто качает кряки, откатывает время и прочее. Люди или покупают софт и для них это нормально, или не покупают. Те кто не хотят покупать будут всячески стараться этого избежать. Зато для других это будет что-то вроде демо версии и когда они созреют и привыкнут, то сами купят.
2) Проверяй время не только при запуске программы, но и иногда во время её работы. Дело в том, что сидеть на постоянно изменённом времени очень неудобно и даже создаёт сбои. Потому обычно перевод времени запускается лишь вначале через другую программу, которая и запускают текущую, а потом время почти сразу возвращают в исходное состояние.
3) Если уж ситуация совсем покоя не даёт, поставь ещё таймер, который будет отсчитывать месяц во время работы, хотя по мне это лишнее. Да и вообще без модели сервис как услуга любая защита это условность, пока не взломают.
Большие компании тоже так думают. А как же, наши же программы запустят, нам не заплатят. А в России вообще не нужно ничего продавать, там одни "пираты". Потом приходит стим и все встают на уши, но от привычки ставить "дно"ву и прочее так и не могут отказаться. Уж и ведьмак 3 продают без защиты, а эти всё гнут свою линию. По мне лицензия на месяц тоже такая себе покупка, я такое не люблю и покупаю приложения навсегда, а подписоту игнорирую и если надо заменяю её аналогами.
Здравствуйте, Basil2, Вы писали:
B>Продаю помесячные лицензии. Программа проверяет их валидность тупо по дате на компе.
B>Вопрос — как лучше убедиться, что время настоящее?
Ещё можно залезть в личные папки и в папку /tmp и посмотреть даты файлов. Если кто-то подкручивает даты, то наверняка будут файлы "из будущего".
А проще всего — при работе программы куда-нибудь (виндовый реестр, файл настроек) периодически записывать текущие даты. И проверять, не оказались ли мы вдруг "в прошлом".
Здравствуйте, Basil2, Вы писали:
B> Первая мысль это послать запрос на сервер времени. Но это ведь сетевая активность, файрвол, антивирусы и все такое. Есть ли более мягкие варианты проверки? Как вы решаете эту проблему?
B>вменяемый человек не станет из-за $3 в месяц сидеть на сбитом времени.
А никто и не будет сидеть со сбитым временем. Просто запустят твой софт через RunAsDate и все. Или запустят в виртуалке с отключенным сервисом синхронизации времени. Это проще, чем кажется.
Здравствуйте, Basil2, Вы писали:
B>P.S.S. Спасибо за ответы. Я решил, что время пожалуй не самая главная проблема — вменяемый человек не станет из-за $3 в месяц сидеть на сбитом времени.
Именно, сидеть со сбитым временем на своем компе — бред.
А вот "виртуалка" из образа (или контейнера) со сбитым временем — гораздо более реальный сценарий, я даже сам так делал
Тут без внешнего сервера вроде никак, да. С другой стороны, запросы из виртуалки можно перехватить, и вернуть что надо.
В общем проблема щита и меча.
IMHO из-за 3 баксов в месяц — смешно о таком париться.
Продаю помесячные лицензии. Программа проверяет их валидность тупо по дате на компе.
Вопрос — как лучше убедиться, что время настоящее?
За нормальных покупателей я не переживаю. Но кто-то нехороший может купить одну лицензию, расшарить ее и под ней, меняя дату на компе, смогут сидеть сколько угодно человек и сколько угодно долго.
Первая мысль это послать запрос на сервер времени. Но это ведь сетевая активность, файрвол, антивирусы и все такое. Есть ли более мягкие варианты проверки? Как вы решаете эту проблему?
P.S. На время же завязан текущий механизм "защиты". Экзешник каждые два месяца "протухает", и надо скачивать новый. Это я придумал случайно, когда не успевал сделать монетизацию и хотел таким образом ограничить время жизни бесплатной версии. Но решение оказалось удачным, т.к. оно регулярно завлекает пользователей на сайт, плюс по кол-ву скачиваний можно оценить кол-во реальных пользователей. Ну и фришку так в итоге и вырубил
P.S.S. Спасибо за ответы. Я решил, что время пожалуй не самая главная проблема — вменяемый человек не станет из-за $3 в месяц сидеть на сбитом времени. Вот контроль за кол-вом лицензий и отзыв лицензии — вот это тема. Но, видимо, уже отдельная...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
B>Первая мысль это послать запрос на сервер времени. Но это ведь сетевая активность, файрвол, антивирусы и все такое. Есть ли более мягкие варианты проверки? Как вы решаете эту проблему?
Зачем время узнавать? Надо считать время, проведенное в проге и приплюсовывать его куда-нибудь в реестр.
Здравствуйте, vsb, Вы писали:
vsb>Самый простой способ это использовать виртуалку и откатывать весь образ взад. Тогда без сети никак не убедишься.
Можно еще запрещать работать в виртуалке, а факт ее наличия проверять по специфическим драйверам. Но это тоже такое себе. Тем более, виртуалки все чаще используются, особенно в корпоративной среде.
Здравствуйте, L.K., Вы писали:
LK>Можно залезть на главную страницу google.com, там в блоке head есть timestamp. Вряд ли пакеты к сайту гугла будут восприняты как подозрительные.
LK>И потом: а обновления как проверяются? Без сетевой активности? Или не проверяются?
Путем протухания экзешника — см. основной пост, я его подновил.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, rudzuk, Вы писали:
B>> Первая мысль это послать запрос на сервер времени. Но это ведь сетевая активность, файрвол, антивирусы и все такое. Есть ли более мягкие варианты проверки? Как вы решаете эту проблему?
R>BITS решает все эти проблемы.
Интересный вариант. А как решает? Я навскидку не нашел там указания на время. Скачивание ориентируется на таймстамп на сайте, это да, но не факт что выдает этот стамп наружу.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Basil2, Вы писали:
B> Интересный вариант. А как решает? Я навскидку не нашел там указания на время. Скачивание ориентируется на таймстамп на сайте, это да, но не факт что выдает этот стамп наружу.
Твой сервер тебе и отдаст таймстамп. BITS же обеспечит беспроблемное общение с сетью.
Здравствуйте, bnk, Вы писали:
bnk>IMHO из-за 3 баксов в месяц — смешно о таком париться.
О таком да. Я даже собирался перестать парится, но тут сказали есть программа RunAsDate, которая под любой датой запускает. Это куда как проще, чем виртуалка. Даже может быть проще, чем покупать лицензию раз в месяц/полгода.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, rudzuk, Вы писали:
B>>вменяемый человек не станет из-за $3 в месяц сидеть на сбитом времени.
R>А никто и не будет сидеть со сбитым временем. Просто запустят твой софт через RunAsDate и все. Или запустят в виртуалке с отключенным сервисом синхронизации времени. Это проще, чем кажется.
Вот блин, а я уж думал забить на проверку времени...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Basil2, Вы писали:
B>Здравствуйте, rudzuk, Вы писали:
B>>>вменяемый человек не станет из-за $3 в месяц сидеть на сбитом времени.
R>>А никто и не будет сидеть со сбитым временем. Просто запустят твой софт через RunAsDate и все. Или запустят в виртуалке с отключенным сервисом синхронизации времени. Это проще, чем кажется.
B>Вот блин, а я уж думал забить на проверку времени...
а никто не знает если из проги запущенной через RunAsDate запустить другую прогу она тоже попадёт под колпак RaD?
Здравствуйте, Michael, Вы писали:
M> а никто не знает если из проги запущенной через RunAsDate запустить другую прогу она тоже попадёт под колпак RaD?
Нет, не попадет. Но RunAsDate не единственный инструмент подобного рода. Есть еще, как минимум, FakeDate, которая влияет и на запускаемые приложения. А еще есть инструменты для подмены серийных номеров жестких дисков, разделов, типов файловой системы, имени пользователя, имени компьютера и других идентификаторов привязки.
Здравствуйте, rudzuk, Вы писали:
r> Нет, не попадет. Но RunAsDate не единственный инструмент подобного рода. Есть еще, как минимум, FakeDate, которая влияет и на запускаемые приложения. А еще есть инструменты для подмены серийных номеров жестких дисков, разделов, типов файловой системы, имени пользователя, имени компьютера и других идентификаторов привязки.
Нет, FakeDate тоже не влияет на запускаемые приложения.
Здравствуйте, rudzuk, Вы писали:
R>Здравствуйте, rudzuk, Вы писали:
r>> Нет, не попадет. Но RunAsDate не единственный инструмент подобного рода. Есть еще, как минимум, FakeDate, которая влияет и на запускаемые приложения. А еще есть инструменты для подмены серийных номеров жестких дисков, разделов, типов файловой системы, имени пользователя, имени компьютера и других идентификаторов привязки.
R>Нет, FakeDate тоже не влияет на запускаемые приложения.
тогда ТС может date-чекер запускать в отдельном приложении(процессе).
Здравствуйте, Michael, Вы писали: R>>Нет, FakeDate тоже не влияет на запускаемые приложения. M>тогда ТС может date-чекер запускать в отдельном приложении(процессе).
Думаю есть варианты попроще — например создать файл и взять его дату. Или взять дату через WMI или из какой-нить системной структуры.
Скорее всего RunAsDate тупо подменяет GetSystemTime и GetLocalTime и не более того.
Я вообще считаю триал от даты создания конфигурационного файла. Оно не светится во всяких там мониторах реестра и нет простого способа его сменить (средствами Windows). Файл конечно можно удалить и тогда триал начнется с начала, но придется все настраивать заново — кому такое понравится делать регулярно.
Здравствуйте, Черный Властелин, Вы писали:
ЧВ> Думаю есть варианты попроще — например создать файл и взять его дату. Или взять дату через WMI или из какой-нить системной структуры.
Все еще проще, достаточно позвать GetProcessTimes и смотреть на lpCreationTime.
Здравствуйте, L.K., Вы писали:
LK>Ещё можно залезть в личные папки и в папку /tmp и посмотреть даты файлов. Если кто-то подкручивает даты, то наверняка будут файлы "из будущего".
А если у кого-то сбились часы, и человек не сразу заметил?