Задался вопросом ограничения время работы своей программы. В принципе задача простая, если не брать в расчет попытки обхода этого ограничения.
Подскажите, как реализовать ограничение по времени работы, чтобы нельзя было тупо открутить время назад. Или воспользоваться программой типа Trial Reset
для удаления записей о начальном времени работы.
U>Задался вопросом ограничения время работы своей программы. В принципе задача простая, если не брать в расчет попытки обхода этого ограничения. U>Подскажите, как реализовать ограничение по времени работы, чтобы нельзя было тупо открутить время назад. Или воспользоваться программой типа Trial Reset U>для удаления записей о начальном времени работы.
Для реального решения подобных вопросов нужна привязка к какой-либо точке доверия. Это может быть или сервер в интернете или аппаратны ключ.
Если программа работает с интернетом, то лучше будет привязаться к времени какого-нибудь сервера. Да и хранить данные о дате первого старта тоже можно на сервере. А если нет, даже не знаю, что посоветовать.
Здравствуйте, Uglev, Вы писали:
U>Здравствуйте.
U>Задался вопросом ограничения время работы своей программы. В принципе задача простая, если не брать в расчет попытки обхода этого ограничения. U>Подскажите, как реализовать ограничение по времени работы, чтобы нельзя было тупо открутить время назад. Или воспользоваться программой типа Trial Reset U>для удаления записей о начальном времени работы.
Ну если без http сервера, то в общем случае задача сводится к тому, как поглубже запрятать запись о первом запуске.
Интересно, в сам exe пишут? Только переустановкой решается.
А если в файл/реестр — можно не запускатся если его удалили
Можно еще запихнуть в нелогичную папку запись(ну там в system32 или в реестре в Microsoft\Windows\CurrentVersion и т.п.). Но это уже кощунство..
Здравствуйте, sidorov18, Вы писали:
S>Здравствуйте, Uglev, Вы писали:
S>А если в файл/реестр — можно не запускатся если его удалили
Точно, и подписать цифровой подписью. Пожалуй, лучший вариант.
Здравствуйте, boot, Вы писали:
B>Здравствуйте, sidorov18, Вы писали:
S>>Здравствуйте, Uglev, Вы писали:
S>>А если в файл/реестр — можно не запускатся если его удалили B>Точно, и подписать цифровой подписью. Пожалуй, лучший вариант.
В таком случает файл даже может быть пустым. Главное — дата его создания. Другой вопрос — подделать эту запись можно в винде или нет?
Здравствуйте, sidorov18, Вы писали:
S>Здравствуйте, boot, Вы писали:
B>>Здравствуйте, sidorov18, Вы писали:
S>>>Здравствуйте, Uglev, Вы писали:
S>>>А если в файл/реестр — можно не запускатся если его удалили B>>Точно, и подписать цифровой подписью. Пожалуй, лучший вариант.
S>В таком случает файл даже может быть пустым. Главное — дата его создания. Другой вопрос — подделать эту запись можно в винде или нет?
Без ключей сложно подделать. Главное ключи заныкать поглубже в программу, так глубоко, чтобы это стало нецелесообразным. Но, ничего невозможного нет.
S>>>>А если в файл/реестр — можно не запускатся если его удалили B>>>Точно, и подписать цифровой подписью. Пожалуй, лучший вариант.
S>>В таком случает файл даже может быть пустым. Главное — дата его создания. Другой вопрос — подделать эту запись можно в винде или нет?
B>Без ключей сложно подделать. Главное ключи заныкать поглубже в программу, так глубоко, чтобы это стало нецелесообразным. Но, ничего невозможного нет.
Я имел ввиду дату создания файла..
Вообще файл может быть подписан на сервере. Тогда и ключи не нужно прятать.
Здравствуйте, sidorov18, Вы писали:
S>>>>>А если в файл/реестр — можно не запускатся если его удалили B>>>>Точно, и подписать цифровой подписью. Пожалуй, лучший вариант.
S>>>В таком случает файл даже может быть пустым. Главное — дата его создания. Другой вопрос — подделать эту запись можно в винде или нет?
B>>Без ключей сложно подделать. Главное ключи заныкать поглубже в программу, так глубоко, чтобы это стало нецелесообразным. Но, ничего невозможного нет.
S>Я имел ввиду дату создания файла..
S>Вообще файл может быть подписан на сервере. Тогда и ключи не нужно прятать.
С серваком-то конечно проще в плане прятания. Я думал без него надо.
Здравствуйте, boot, Вы писали:
B>Здравствуйте, sidorov18, Вы писали:
S>>>>>>А если в файл/реестр — можно не запускатся если его удалили B>>>>>Точно, и подписать цифровой подписью. Пожалуй, лучший вариант.
S>>>>В таком случает файл даже может быть пустым. Главное — дата его создания. Другой вопрос — подделать эту запись можно в винде или нет?
B>>>Без ключей сложно подделать. Главное ключи заныкать поглубже в программу, так глубоко, чтобы это стало нецелесообразным. Но, ничего невозможного нет.
S>>Я имел ввиду дату создания файла..
S>>Вообще файл может быть подписан на сервере. Тогда и ключи не нужно прятать.
B>С серваком-то конечно проще в плане прятания. Я думал без него надо.
Я имел ввиду, что приватного ключа не будет на клиенте.
Файл создается программистом и копируется программой при первом запуске. Далее фигурирует только дата создания файла.
Если дату создания файла никак не подменить(ну кроме руткитов и т.п.) простыми способами, то все классно и просто..
Здравствуйте, sidorov18, Вы писали:
S>>>Вообще файл может быть подписан на сервере. Тогда и ключи не нужно прятать.
B>>С серваком-то конечно проще в плане прятания. Я думал без него надо.
S>Я имел ввиду, что приватного ключа не будет на клиенте. S>Файл создается программистом и копируется программой при первом запуске. Далее фигурирует только дата создания файла. S>Если дату создания файла никак не подменить(ну кроме руткитов и т.п.) простыми способами, то все классно и просто..
Хотя нет. Файл можно скопировать а потом переписать этим файлом старый. так поменяется дата создания.
Все же текст внутри нужен.
S>Хотя нет. Файл можно скопировать а потом переписать этим файлом старый. так поменяется дата создания. S>Все же текст внутри нужен.
Тут уж скорее нужна временная лицензия, в которой прописывается дата ее получения.
Правда все-таки непонятно, что помешает злоумышленнику в таком случае, просто открутить часы назад.
Здравствуйте, Uglev, Вы писали:
U>Здравствуйте.
U>Задался вопросом ограничения время работы своей программы. В принципе задача простая, если не брать в расчет попытки обхода этого ограничения. U>Подскажите, как реализовать ограничение по времени работы, чтобы нельзя было тупо открутить время назад. Или воспользоваться программой типа Trial Reset U>для удаления записей о начальном времени работы.
Ответ очевиден — нужно не привязываться к системному времени, а запоминать чистое время работы программы.
Например, в минутах. Когда наберется, скажем, 120 часов (5 суток работы) — сказать: "все, песенка спета,
пришла пора платить денежку".
P.S.
От "Trial Reset" спасет только хороший протектор, да понаставленные повсюду в коде проверки,
срабатывающие, как тут один человек хорошо сказал, в зависимости от фазы луны.
Чтобы затруднить задачу крякерам.
А еще частые выпуски новых версий программы, несовместимые со старыми кряками.
Здравствуйте, sidorov18, Вы писали:
S>Здравствуйте, sidorov18, Вы писали:
S>>>>Вообще файл может быть подписан на сервере. Тогда и ключи не нужно прятать.
B>>>С серваком-то конечно проще в плане прятания. Я думал без него надо.
S>>Я имел ввиду, что приватного ключа не будет на клиенте. S>>Файл создается программистом и копируется программой при первом запуске. Далее фигурирует только дата создания файла. S>>Если дату создания файла никак не подменить(ну кроме руткитов и т.п.) простыми способами, то все классно и просто..
S>Хотя нет. Файл можно скопировать а потом переписать этим файлом старый. так поменяется дата создания. S>Все же текст внутри нужен.
Текст или число, хоть что, но программе придется что-то писать, а потом проверять достоверность написанного по цифровой подписи. В защите вся загвоздка всегда в ключах. Сумеете спрятать два ключа, хорошо, тогда ломать будет также сложно как и найти ключ.
Здравствуйте, sidorov18, Вы писали:
S>Если дату создания файла никак не подменить(ну кроме руткитов и т.п.) простыми способами, то все классно и просто..
SetFileTime Function
Sets the date and time that the specified file or directory was created, last accessed, or last modified.
Здравствуйте, Uglev, Вы писали:
U>Задался вопросом ограничения время работы своей программы. В принципе задача простая, если не брать в расчет попытки обхода этого ограничения. U>Подскажите, как реализовать ограничение по времени работы, чтобы нельзя было тупо открутить время назад. Или воспользоваться программой типа Trial Reset U>для удаления записей о начальном времени работы.
Насчет отмотки времени на компе назад — не знаю, как защитится, пока не обдумывал.
По поводу ограничения по времени — сделал так — при покупке дается короткий код лицензии, затем его надо активировать и получить код активации. Вот в код активации я и зашиваю дату, и подписываю. А в программе не дата, а дельта (ее тоже наверно можно в код активации записать), вот и сравниваем текущую дату с тем, что в коде активации.
Marty>По поводу ограничения по времени — сделал так — при покупке дается короткий код лицензии, затем его надо активировать и получить код активации. Вот в код активации я и зашиваю дату, и подписываю. А в программе не дата, а дельта (ее тоже наверно можно в код активации записать), вот и сравниваем текущую дату с тем, что в коде активации.
Да, вот тоже подумываю о таком варианте. Или же ограничивать не по дате, а по времени работы программы, как тут писали.
Или все-таки привязываться к онлайн-серверу какому-то, открутить время на сервере ни у кого не получится. Я так понимаю,
в этом случае только патчем можно взломать. Но думаю, до этого не дойдет
Здравствуйте, boot, Вы писали:
S>>Хотя нет. Файл можно скопировать а потом переписать этим файлом старый. так поменяется дата создания. S>>Все же текст внутри нужен.
B>Текст или число, хоть что, но программе придется что-то писать, а потом проверять достоверность написанного по цифровой подписи. В защите вся загвоздка всегда в ключах. Сумеете спрятать два ключа, хорошо, тогда ломать будет также сложно как и найти ключ.
Ну да. похоже нет способа держать приватный ключ на сервере.
Все должно шифроватся на месте.
Re: Как ограничить время работы программы
От:
Аноним
Дата:
01.11.11 19:38
Оценка:
Здравствуйте, Uglev, Вы писали:
U>Здравствуйте.
U>Задался вопросом ограничения время работы своей программы. В принципе задача простая, если не брать в расчет попытки обхода этого ограничения. U>Подскажите, как реализовать ограничение по времени работы, чтобы нельзя было тупо открутить время назад. Или воспользоваться программой типа Trial Reset U>для удаления записей о начальном времени работы.
Логичнее, на мой взгляд, использовать внешние часы, которые злодей поменять не сможет. Здесь либо серевер активации, либо электронные ключи с встроенными часами реального времени (Guardant Time, Senselock,..)