Простенькую защиту от длительного пользования прогой
От: _hum_ Беларусь  
Дата: 12.02.17 19:51
Оценка:
Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии
1) программка без инсталляции (записи в систему исключаются);
2) переводом часов чтоб нельзя было осуществить "взлом".

Кто какие хорошие способы знает для Win?

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

Спасибо.
Re: Простенькую защиту от длительного пользования прогой
От: AlexGin Беларусь  
Дата: 13.02.17 06:46
Оценка: 3 (1)
Здравствуйте, _hum_, Вы писали:

__>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>1) программка без инсталляции (записи в систему исключаются);
__>2) переводом часов чтоб нельзя было осуществить "взлом".

__>Кто какие хорошие способы знает для Win?


Может быть, имеет смысл посмотреть в сторону DPAPI:
a) https://msdn.microsoft.com/en-us/library/ms995355.aspx
b) https://habrahabr.ru/post/148602
c) http://stackoverflow.com/questions/18651982/dpapi-encrypt-in-c-app-decrypt-in-c-sharp-app
d) http://www.overclock.net/t/1293731/windows-data-protection-api-c-and-c
Отредактировано 13.02.2017 6:47 AlexGin . Предыдущая версия .
Re: Простенькую защиту от длительного пользования прогой
От: Chorkov Россия  
Дата: 13.02.17 08:45
Оценка:
Здравствуйте, _hum_, Вы писали:

__>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>1) программка без инсталляции (записи в систему исключаются);
__>2) переводом часов чтоб нельзя было осуществить "взлом".

__>Кто какие хорошие способы знает для Win?


__>В голову приходит что-то типа: вместе с программкой идет бинарный файл, который при каждом запуске проги меняется (например, в него записывается дата первого и последнего запуска, чтоб нельзя было часы назад перевести). В этом случае еще б какую привязку ко времени создания файлов на диске, чтоб нельзя было так просто этот файлик от одной прожки подсунуть другой...


А если пользователь заменит "файлк" на аналогичный из состава дитрибутива / архива с програмкой?
Так или иначе, "файлик" придается прятать от пользователя: писать в реестр и т.п.
С нынешней легкодоступностью виртуальных машин, это стало почти бесполезно.

А к сети обращаться можно?
Текущее время можно спросить по сети по протоколу NTP, например, на time.nist.gov (или на своем сайте).
Re: Простенькую защиту от длительного пользования прогой
От: nen777w  
Дата: 13.02.17 11:26
Оценка: +3
__>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии
__>Кто какие хорошие способы знает для Win?

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

__>2) переводом часов чтоб нельзя было осуществить "взлом".

Виртуализация критичного кода.


__>В голову приходит что-то типа: вместе с программкой идет бинарный файл, который при каждом запуске проги меняется (например, в него записывается дата первого и последнего запуска, чтоб нельзя было часы назад перевести). В этом случае еще б какую привязку ко времени создания файлов на диске, чтоб нельзя было так просто этот файлик от одной прожки подсунуть другой...


Плохая идея, потому что:
1) Если захотите подписать приложение и выпускать подписаное то этот способ вам уже не подойдёт.
2) Теоретически некоторым ативирусам, такое поведение может не понравится. Со временем можно загреметь в блек лист и иметь гембель с выковыриванием себя оттуда.
Re: Простенькую защиту от длительного пользования прогой
От: ononim  
Дата: 13.02.17 20:50
Оценка:
__>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии
__>1) программка без инсталляции (записи в систему исключаются);
__>2) переводом часов чтоб нельзя было осуществить "взлом".
__>Кто какие хорошие способы знает для Win?
В интернет ходить можно по-маленькому? За RSA timestamp я имею ввиду...
Как много веселых ребят, и все делают велосипед...
Re[2]: Простенькую защиту от длительного пользования прогой
От: _hum_ Беларусь  
Дата: 14.02.17 07:36
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Здравствуйте, _hum_, Вы писали:


__>>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>>1) программка без инсталляции (записи в систему исключаются);
__>>2) переводом часов чтоб нельзя было осуществить "взлом".

__>>Кто какие хорошие способы знает для Win?


AG>Может быть, имеет смысл посмотреть в сторону DPAPI:

AG>a) https://msdn.microsoft.com/en-us/library/ms995355.aspx
AG>b) https://habrahabr.ru/post/148602
AG>c) http://stackoverflow.com/questions/18651982/dpapi-encrypt-in-c-app-decrypt-in-c-sharp-app
AG>d) http://www.overclock.net/t/1293731/windows-data-protection-api-c-and-c

спасибо, буду иметь в виду. но выглядит довольно тяжеловесно.
Re[2]: Простенькую защиту от длительного пользования прогой
От: _hum_ Беларусь  
Дата: 14.02.17 07:39
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>Здравствуйте, _hum_, Вы писали:


__>>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>>1) программка без инсталляции (записи в систему исключаются);
__>>2) переводом часов чтоб нельзя было осуществить "взлом".

__>>Кто какие хорошие способы знает для Win?


__>>В голову приходит что-то типа: вместе с программкой идет бинарный файл, который при каждом запуске проги меняется (например, в него записывается дата первого и последнего запуска, чтоб нельзя было часы назад перевести). В этом случае еще б какую привязку ко времени создания файлов на диске, чтоб нельзя было так просто этот файлик от одной прожки подсунуть другой...


C>А если пользователь заменит "файлк" на аналогичный из состава дитрибутива / архива с програмкой?

C>Так или иначе, "файлик" придается прятать от пользователя: писать в реестр и т.п.
C>С нынешней легкодоступностью виртуальных машин, это стало почти бесполезно.

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

C>А к сети обращаться можно?

C>Текущее время можно спросить по сети по протоколу NTP, например, на time.nist.gov (или на своем сайте).

ну, в общем случае, конечно, нельзя. не все же работают с подключенным интернет. другое дело, можно ли как-то машинное время (то, которое в биос), а не локальное системное узнать, чтоб к нему привязываться?
Re[2]: Простенькую защиту от длительного пользования прогой
От: _hum_ Беларусь  
Дата: 14.02.17 07:46
Оценка:
Здравствуйте, nen777w, Вы писали:

__>>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>>Кто какие хорошие способы знает для Win?

N>Никаких.

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

мне так не пойдет, потому как задача другая — дать пользоваться полным функционалом, но на ограниченный срок.

__>>2) переводом часов чтоб нельзя было осуществить "взлом".

N>Виртуализация критичного кода.

что имелось в виду под "виртуализацией кода"?


__>>В голову приходит что-то типа: вместе с программкой идет бинарный файл, который при каждом запуске проги меняется (например, в него записывается дата первого и последнего запуска, чтоб нельзя было часы назад перевести). В этом случае еще б какую привязку ко времени создания файлов на диске, чтоб нельзя было так просто этот файлик от одной прожки подсунуть другой...


N>Плохая идея, потому что:

N>1) Если захотите подписать приложение и выпускать подписаное то этот способ вам уже не подойдёт.

не совсем понимаю, почему, ну да не суть — про подписание пока речи не идет (как и о широком распространении приложения)

N>2) Теоретически некоторым ативирусам, такое поведение может не понравится. Со временем можно загреметь в блек лист и иметь гембель с выковыриванием себя оттуда.


странно, ибо стандартные приложения с файлами настроек постоянно меняют эти файлы. неужели их тоже в блек-листы заносят?


п.с. программа пока не коммерческая. в данном случае я просто хочу защититься от ее распространения за пределы того круга лиц, которым собираюсь дать ей временно попользоваться.
Re[2]: Простенькую защиту от длительного пользования прогой
От: _hum_ Беларусь  
Дата: 14.02.17 07:46
Оценка:
Здравствуйте, ononim, Вы писали:

__>>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>>1) программка без инсталляции (записи в систему исключаются);
__>>2) переводом часов чтоб нельзя было осуществить "взлом".
__>>Кто какие хорошие способы знает для Win?
O>В интернет ходить можно по-маленькому? За RSA timestamp я имею ввиду...

нет
Re[3]: Простенькую защиту от длительного пользования прогой
От: nen777w  
Дата: 15.02.17 16:58
Оценка:
N>>Ну и к тому же есть "виртуальные машины", как лучшее средство защиты от триала
__>мне так не пойдет, потому как задача другая — дать пользоваться полным функционалом, но на ограниченный срок.

Дело Ваше.

__>>>2) переводом часов чтоб нельзя было осуществить "взлом".

N>>Виртуализация критичного кода.
__>что имелось в виду под "виртуализацией кода"?

Виртуальная машина внутри приложения на которой выполняется код скомпилироанный для нее.
Я у себя для этих целей писал виртуальную машину и компилятор к ней.


__>>>В голову приходит что-то типа: вместе с программкой идет бинарный файл, который при каждом запуске проги меняется (например, в него записывается дата первого и последнего запуска, чтоб нельзя было часы назад перевести). В этом случае еще б какую привязку ко времени создания файлов на диске, чтоб нельзя было так просто этот файлик от одной прожки подсунуть другой...


N>>Плохая идея, потому что:

N>>1) Если захотите подписать приложение и выпускать подписаное то этот способ вам уже не подойдёт.
__>не совсем понимаю, почему, ну да не суть — про подписание пока речи не идет (как и о широком распространении приложения)
Потому что как только вы измените подписанный файл, он перестанет верефицироваться.
Можете и не подписыать, но в таком случае пользователь при установке увидит сообщение от UAC (сам не проверял, но наверно так и будет).

N>>2) Теоретически некоторым ативирусам, такое поведение может не понравится. Со временем можно загреметь в блек лист и иметь гембель с выковыриванием себя оттуда.

__>странно, ибо стандартные приложения с файлами настроек постоянно меняют эти файлы. неужели их тоже в блек-листы заносят?
Смотря куда положить файл. Не то же самое просто завести ключик в реестре (там где собственно настройки и должны быть)?

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

Можно наверно просто попросить.

Чисто из любопытсва, что за программа?
Re[4]: Простенькую защиту от длительного пользования прогой
От: _hum_ Беларусь  
Дата: 15.02.17 21:42
Оценка:
Здравствуйте, nen777w, Вы писали:

__>>>>2) переводом часов чтоб нельзя было осуществить "взлом".

N>>>Виртуализация критичного кода.
__>>что имелось в виду под "виртуализацией кода"?

N>Виртуальная машина внутри приложения на которой выполняется код скомпилироанный для нее.

N>Я у себя для этих целей писал виртуальную машину и компилятор к ней.

ой, что-то похоже не стрельбу из пушки по воробьям.

__>>>>В голову приходит что-то типа: вместе с программкой идет бинарный файл, который при каждом запуске проги меняется (например, в него записывается дата первого и последнего запуска, чтоб нельзя было часы назад перевести). В этом случае еще б какую привязку ко времени создания файлов на диске, чтоб нельзя было так просто этот файлик от одной прожки подсунуть другой...


N>>>Плохая идея, потому что:

N>>>1) Если захотите подписать приложение и выпускать подписаное то этот способ вам уже не подойдёт.
__>>не совсем понимаю, почему, ну да не суть — про подписание пока речи не идет (как и о широком распространении приложения)
N>Потому что как только вы измените подписанный файл, он перестанет верефицироваться.
N>Можете и не подписыать, но в таком случае пользователь при установке увидит сообщение от UAC (сам не проверял, но наверно так и будет).

да я же не программу меняю, а сопутствующий ей файл (можно считать его файлом сохранения настроек)

N>>>2) Теоретически некоторым ативирусам, такое поведение может не понравится. Со временем можно загреметь в блек лист и иметь гембель с выковыриванием себя оттуда.

__>>странно, ибо стандартные приложения с файлами настроек постоянно меняют эти файлы. неужели их тоже в блек-листы заносят?
N>Смотря куда положить файл.

в ту же директорию, где и exe-шник

N>Не то же самое просто завести ключик в реестре (там где собственно настройки и должны быть)?


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

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

N>Можно наверно просто попросить.

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

N>Чисто из любопытсва, что за программа?


типа САПРа по управлению транспортными потоками
Re: Простенькую защиту от длительного пользования прогой
От: kov_serg Россия  
Дата: 15.02.17 23:04
Оценка: +1
Здравствуйте, _hum_, Вы писали:

__>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>1) программка без инсталляции (записи в систему исключаются);
__>2) переводом часов чтоб нельзя было осуществить "взлом".

__>Кто какие хорошие способы знает для Win?

Сравнивайте текущее время, например данная версия работает только в 2017г.
Считайте сумарное время использования программы, количестово запусков, текущее непрерывное время работы программы.
Программа выполняет какие-то действия и сохраняет результат. Сравниваем время в файла сгенерированных программой мин и макс и сумарное время редактирования (в файлах должен быть признак именно этой trial, время создания, и время редактирования).
И вообще смотрим на количество файлов. Если активно пользуются то их количество и энтропия должны расти. Обязательно пишем логи из размеры тоже можно учитывать.
Делаем не одну проверку, а чем больше тем лучше, причем некоторые проверки должны иметь вероятностный характер, например проверять только днём, по понедельниками или случайно. Так же можно значение параметров smart hdd использовать, возраст винды, альтернативные потоки, ярлыки и закладки в избранное, и даты во временных файлах браузеров, если есть доступ к сети то и сеть использовать.
Желательно что бы отвязка происходила в несколько этапов, что бы усложнить поиск. Плюс постоянное намекание на то как "легко с помощью банковской карты в течении 2х минут", не отрывая жопы от стула, можно перейти на полную версию.
И прикрыть всё это безобразие протектором.
Re: Простенькую защиту от длительного пользования прогой
От: Erop Россия  
Дата: 22.02.17 18:02
Оценка:
Здравствуйте, _hum_, Вы писали:

__>1) программка без инсталляции (записи в систему исключаются);

А во время работы программы тоже исключаются?

__>2) переводом часов чтоб нельзя было осуществить "взлом".

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

__>Кто какие хорошие способы знает для Win?


Ну, например, можно написать генератор фейковых UID'ов, которые как-то опознаются, ну, например, по контрольной сумме какой-то.

Время от времени программа может генерить такой и регать его в системе.
А при старте считать сколько в системе "своих" UID'ов. Если их станет слишком много -- не запускаться.

Но если речь о чём-то совсем несерьёзном, то можно заставить пользователя время от времени делать что-то, что немного ему понравится, а много задолбает.

Например, если прога что-то считает, можно заставить играть в тетрис, пока она считает. Проиграл -- самосносится
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Простенькую защиту от длительного пользования прогой
От: Икс Россия  
Дата: 24.02.17 14:25
Оценка: +1
Здравствуйте, _hum_, Вы писали:

__>Хочу простенькую защиту от длительного использования программы (привязка к сроку использования), при условии

__>1) программка без инсталляции (записи в систему исключаются);
__>2) переводом часов чтоб нельзя было осуществить "взлом".

Грубо говоря: сверяйте время модификации[компиляции][создания] файла[папки] своей программы с тем что меняется каждый день (какой нибудь лог-файл винды например, вот посмотрел у "c:\Users\[user]\ntuser.ini" свежее время модификации)
Конечно тему можно развить и улучшить
Отредактировано 24.02.2017 14:28 Икс . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.