Счетчик времени, не привязанный к системному времени.
Было бы желание - всё взломают. Стопроцентно работающий вариант - только выполнять проверки и часть кода программы на USB-донгле или удалённом недоступном пользователю сервере. Всё остальное можно тем или иным образом обойти.
Было бы желание - всё взломают.Не, не, не! забыл уточнить, что пользователь не обладает навыками дизассемблирования. Он только переставляет винду, копирует файлы, и балуется со временем
Если пользователь создаёт какие-то данные в программе и потом их сохраняет, и не предполагается, что ими потом будет пользоваться кто-то, кроме пользователя, можно в файл с данными дописывать имя пользователя и дату первого запуска программы и инкрементить счётчик в нём. Тогда теоретически можно будет пользоваться прогой и больше разрешенного времени, но с дикими неудобствами.
Так вот... можно ли гарантированно отсчитать время работы программы? (и, как усложнение задачи - всех ее копий)Мущина, вы интернетом умеете пользоваццо из вашей программы?
Программа твоя для ЭВМ должна брать какую угодно соль, например, sha256("экземпляр проги ПР-253345334, сейчас на компе 7 октября 2014 14:17, свободное место на диске 37 гигов, raw pointer на переменную херня 0x0000043342ff5400")
Далее по интернету ты делаешь запрос и просишь подписать этот хешик цифровой подписью.
Разумеется, надо обфускацию делать, без нее любую хрень дизассемблером можно решить.
Но это всё — порнотехнологии. Я не знаю какой дебил ещё пользуется такого рода "защищенными" программами. Это идиотизм, завязывать бизнес на говнецо, которое непредсказуемо может начать перестать работать.
Я не знаю какой дебил ещё пользуется такого рода "защищенными" программами. Это идиотизм, завязывать бизнес на говнецоНикто не завязывает никакой бизнес на этом принципе
Вопрос был чисто гипотетический. Может ли программа знать сколько она проработала. Где программа - это, к примеру, один исполняемый файл, она не пользуется интернетами, не сохраняет никаких пользовательских баз данных и тд итп.... в общем, я так понял по ответам, что не может, либо никто еще не знает, как это сделать
А так-то да, частичный код на флешке - вроде, и есть решение.
На сегодняшний день можно попробовать еще где-нибудь в eeprom хранить - ну например в eeprom ddc монитора, планки памяти или еще где (разумеется, куда реально можно записывать и где есть свободные байты). Можно в смарте винта записывать - например запуская смартчек и затем прерывая его, по совокупности некоторых параметров можно судить было ли это сделано твоим счетчиком или так оно само получилось. Вариантов куча - необходимости мало, может оказаться вредно для здоровья (а может - полезно).
Никто не завязывает никакой бизнес на этом принципеЯ не понял, а чем тебя не устроил вариант с удалённым сервером?
Вопрос был чисто гипотетический. Может ли программа знать сколько она проработала. Где программа - это, к примеру, один исполняемый файл, она не пользуется интернетами, не сохраняет никаких пользовательских баз данных и тд итп.... в общем, я так понял по ответам, что не может, либо никто еще не знает, как это сделать
А так-то да, частичный код на флешке - вроде, и есть решение.
Я не понял, а чем тебя не устроил вариант с удалённым сервером?например, отсутствие интернета
А вообще я реально сейчас ничего такого не пишу, просто задумался. То есть никакого прикладного приложения - чистой воды философия.
В общем, я придумал примерно так: при запуске программы считывается некий файлик, созданный этой же программой. В файлике в зашифрованном виде находится информация о данном компе и системе. Если инфа не совпадает с реальностью, то выходим. Далее, в нем же находится инфа о реальном времени работы программы, которую прога периодически приплюсовывает к нему. Ну, и в нем же указана дата собственного создания, которая должна опять же совпадать с реальностью.
Ну, как-то так....
В общем, я придумал примерно так: при запуске программы считывается некий файлик, созданный этой же программой. В файлике в зашифрованном виде находится информация о данном компе и системе. Если инфа не совпадает с реальностью, то выходим.что делать, если пользователь поменял процессор/обновил систему?
Далее, в нем же находится инфа о реальном времени работы программы, которую прога периодически приплюсовывает к нему. Ну, и в нем же указана дата собственного создания, которая должна опять же совпадать с реальностью.что делать, если пользователь запускает программу в виртуалке и периодически откатывает её снапшот?
Безотказный вариант - логин+пароль конкретного юзера - и удаленный сервер, куда пишется сколько конкретный пользователь надрочил с программой.
Безотказный вариант
Хватит стеба! Наш шарообразный юзер - не хакер!
если не хакер то просто пиши в "Program Files" лог использования
Тогда уж в Local...Application Data.
Надо просто выносит на сервера не только проверку, но и логику работы программы. Тогда всё будет ок. Собственно счас все главные пидарасы так и делают.
Радиоактивный изотоп с небольшим периодом полураспада уже предлагали?
Пользователь может его подменить!
Я бы не стал связываться с пользователем, имеющим доступ к расщепляемым материалам.
имеющим доступ к расщепляемым материаламих же у того же DealExtreme можно купить
Оставить комментарий
markyzz
Вопрос скорее для размышления. и скорее всего уже решен И скорее всего решен костылямиНо, все же:
Есть программа, которую написал некий программист. Он хочет, чтобы пользователь пользовался ей только определенный срок, а потом бы покупал еще.
вариант 1: программист зашифровал дату с которой начинается лицензия и считывал системное время в программе. Но хитрый пользователь переводил время назад, каждый раз, когда заканчивалась лицензия.
вариант 2: программист считал абсолютное время работы программы и сохранял его на диск, плюсуя с тем, что прошло до этого. Хитрый пользователь скопировал все файлы программы через одну секунду работы и подменял этой версией старые файлы в случае необходимости...
вариант X: всякий раз, чтобы ни делал программист, пользователь то переустанавливал систему, то копировал файлы, то менял настройки...
Так вот... можно ли гарантированно отсчитать время работы программы? (и, как усложнение задачи - всех ее копий)