Возможно ли хранить переменную и изменять внутри библиотеки? Нужно сделать счетчик запусков программы, но так чтоб он не сохранялся в реестр или в текстовый файл.
Здравствуйте, Glas, Вы писали:
G>Возможно ли хранить переменную и изменять внутри библиотеки? Нужно сделать счетчик запусков программы, но так чтоб он не сохранялся в реестр или в текстовый файл.
Почему не подходит в данном случаи просто записывать в файл зашифрованный счетчик?
Підтримати Україну у боротьбі з країною-терористом.
Здравствуйте, ichensky, Вы писали:
I>Почему не подходит в данном случаи просто записывать в файл зашифрованный счетчик?
Потому что первая мысль, которая пришла в голову это сохранить начальный счетчик и подсовывать его когда надо.
Просто поизучал этот вопрос, все сводят решение к online счетчику. В реестр/файл легко обнулить.
Здравствуйте, Glas, Вы писали:
G>Возможно ли хранить переменную и изменять внутри библиотеки? Нужно сделать счетчик запусков программы, но так чтоб он не сохранялся в реестр или в текстовый файл.
Хранить-то можно, да толку не будет. DLL без процесса не работает и в памяти не находится. Поэтому после окончания процесса DLL выгружена из памяти вместе со своим счетчиком, а после запуска программы DLL будет загружена опять, и все с нуля.
Опиши задачу подробнее. Что значит хранить счетчик запусков ? С какого момента — момента загрузки Windows, или вообще на этой машине с момента инсталляции Windows? Если второе — реестр или AppData в профиле. Если первое — можно сервис написать, с которым программа связывается и который увеличивает счетчик внутри себя. Сервис должен запускаться при старте системы.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Хранить-то можно, да толку не будет. DLL без процесса не работает и в памяти не находится. Поэтому после окончания процесса DLL выгружена из памяти вместе со своим счетчиком, а после запуска программы DLL будет загружена опять, и все с нуля.
PD>Опиши задачу подробнее. Что значит хранить счетчик запусков ? С какого момента — момента загрузки Windows, или вообще на этой машине с момента инсталляции Windows? Если второе — реестр или AppData в профиле. Если первое — можно сервис написать, с которым программа связывается и который увеличивает счетчик внутри себя. Сервис должен запускаться при старте системырогр
Задача банальная, отрубить программу, когда некоторый счетчик достигнет предела по лицензии. Мы даем лицензию на запуск программы N раз, на N + 1 раз она не должна запуститься. С файлом и реестром мне не нравится, потому что систему элементарно можно откатить.
Здравствуйте, Glas, Вы писали:
G>Задача банальная, отрубить программу, когда некоторый счетчик достигнет предела по лицензии. Мы даем лицензию на запуск программы N раз, на N + 1 раз она не должна запуститься. С файлом и реестром мне не нравится, потому что систему элементарно можно откатить.
Если даже у вас получиться сохранить информацию о запусках внутри dll, то кто мешает злоумышленнику переустановить софт или просто заменить эту вашу dll начальной версией с нулевым счетчиком?
Здравствуйте, mogikanin, Вы писали:
G>>Задача банальная, отрубить программу, когда некоторый счетчик достигнет предела по лицензии. Мы даем лицензию на запуск программы N раз, на N + 1 раз она не должна запуститься. С файлом и реестром мне не нравится, потому что систему элементарно можно откатить.
M>Если даже у вас получиться сохранить информацию о запусках внутри dll, то кто мешает злоумышленнику переустановить софт или просто заменить эту вашу dll начальной версией с нулевым счетчиком?
И для изменения dll еще права надо иметь. И антивирусам может не понравится такая активность.
Здравствуйте, Glas, Вы писали:
G>Задача банальная, отрубить программу, когда некоторый счетчик достигнет предела по лицензии. Мы даем лицензию на запуск программы N раз, на N + 1 раз она не должна запуститься. С файлом и реестром мне не нравится, потому что систему элементарно можно откатить.
В любом случае можно откатить. Создать ghost image диска после установки программы, поюзать N раз, восстановить, поюзать N раз, восстановить...
Если есть инсталлянт с, как вы предлагаете, dll-кой со счетчиком = 0, то просто переставлять прогу.
Данная задача не решается без куска "контролируемого hardware" (ключика, сервера где-то и тд) без которого прога не запустится.
Тривиальное решение — это "следить" на компе (оставлять следы) в AppData или реестре, с ключами, счетчиками и т.д. Рядовому пользователю в любом случае будет не просто крекнуть, продвинутый — создаст ghost image и так и эдак, а хакеры ломают и не такие защиты (тут уже саму прогу придется защищать и все равно фиг защитишь, обойдут проверку счетчика банальным return true).
G>Задача банальная, отрубить программу, когда некоторый счетчик достигнет предела по лицензии. Мы даем лицензию на запуск программы N раз, на N + 1 раз она не должна запуститься. С файлом и реестром мне не нравится, потому что систему элементарно можно откатить.
Ну и что ты хочешь ? Запускаем виртуальную машину, работаем, файлы переписываем на реальную, состояние виртуальной машины не сохраняем. Более того, ее можно вообще перенести на другую реальную со всеми ее потрохами. Что тут можно сделать — я не знаю.