Как защитить программное обеспечение от системных изменений даты и времени? [закрыто]

19
задан Im0rtality 12 August 2010 в 08:04
поделиться

12 ответов

Шаг 1: Создайте запись trial_tracker в зашифрованном формате в реестре Windows и в файле.

Шаг 2: Назначьте метку времени установки приложения (гггг-мм-дд-чч-мм-сс) для trial_tracker

Каждый раз при запуске приложения проверяйте, больше ли текущая системная метка времени, чем trial_tracker, и меньше ожидаемой даты истечения срока действия.

  • Если да, обновите trial_tracker до текущей системной отметки времени и продолжите.

  • Если нет, пробный трекер был подделан или время пробного периода истекло. Попросите пользователя приобрести полную версию или выйти.

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

Наряду с этим могут применяться дополнительные удаленные проверки, которые зависят от подключения к Интернету (необязательно)

13
ответ дан 30 November 2019 в 02:33
поделиться

Я предполагаю, что программа звонит домой по крайней мере один раз, чтобы сообщить, что лицензионный ключ был куплен / установлен / продлен?

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

2
ответ дан 30 November 2019 в 02:33
поделиться

Да, можно было бы продлить лицензию на 300%, но с большими усилиями для пользователя. Откровенно говоря, если кто-то собирается тратить каждый день в течение месяца на сброс времени до одной секунды после выхода из вашей программы, прежде чем запустить ее снова, чтобы использовать ее дольше, вы ничего не сможете с этим поделать, а время, которое вы потратите, чтобы остановить его, будет стоить вам больше, чем он когда-либо сделает.

20
ответ дан 30 November 2019 в 02:33
поделиться

Может быть, вы могли бы объединить использование даты/времени с подсчетом тиков? Тогда, если вы видите дату/время с несовместимым количеством тиков, вы можете отметить это как нарушение. Это изменит ваш худший сценарий и потребует перезапуска машины всякий раз, когда они захотят манипулировать часами, чтобы злоупотребить вашей лицензией.

2
ответ дан 30 November 2019 в 02:33
поделиться

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

Однако я бы предпочел заплатить за программное обеспечение, которое мне нужно, вместо того, чтобы иметь правильную дату / время на моей машине.

1
ответ дан 30 November 2019 в 02:33
поделиться

Создайте службу Windows, которая устанавливается вместе с вашим приложением, но запускается автоматически. Следите за прошедшим временем и смещениями. Предоставьте API для вашего приложения, чтобы оно могло взаимодействовать со службой и запрашивать использование / прошедшее время.

3
ответ дан 30 November 2019 в 02:33
поделиться

Включить ведение журнала привилегий (в процессе установки), а затем проверить наличие события изменения времени в журнале событий Windows, как описано здесь:

http://www.stevebunting.org /udpd4n6/forensics/timechange.htm

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

ПРИМЕЧАНИЕ: Это не защитит от изменений системных часов при изменении из BIOS.

0
ответ дан 30 November 2019 в 02:33
поделиться

Создайте драйвер Windows, который запускается при загрузке, захватывает системную дату-время и работает до завершения работы, отслеживая время независимо от Windows [ sleep(1000); ++time; ].

Когда приложение запустится, проверьте, что служба запущена, и проверьте дату и время! Сравните его с датой-временем, на которое вы были установлены, и вы сможете выяснить, истек ли срок действия или нет.

Примечание: Если бы какое-либо приложение сделало это, я бы не установил его в первую очередь. Если бы мне было поручено взломать его, это было бы тривиально. Нет никакого способа предотвратить обратный инжиниринг. НИКАКОЙ. Он БУДЕТ взломан, несмотря ни на что. И когда это произойдет, вы пожалеете, что потратили на это какое-то время.

0
ответ дан 30 November 2019 в 02:33
поделиться

Вы прикладываете слишком много усилий к самой защите.

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

0
ответ дан 30 November 2019 в 02:33
поделиться

Авторитетный менеджер по разработке игр однажды на конференции заявил, что невозможно защитить программное обеспечение дольше месяца даже с подключением к Интернету - если ваше программное обеспечение популярно :-) Так что вы можете просто писать программы, которые никому не нужны, и они будут настолько безопасно, насколько вы хотите: -)))

Если, с другой стороны, вы пишете достаточно популярное программное обеспечение, вам все равно, если небольшой процент платежеспособных клиентов потратит дополнительное время - они все равно продлят через неделю . Если вы действительно хотите получить краткосрочное лицензирование, вы должны сделать Интернет обязательным условием. Он все равно будет взломан через месяц, если он для чего-то пригодится :-), но платящие клиенты в целом останутся платящими клиентами с достаточно легким контролем.

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

9
ответ дан 30 November 2019 в 02:33
поделиться

Может быть, вы могли бы предложить это программное обеспечение в качестве услуги, если вы так беспокоитесь о принудительном применении лицензии?

0
ответ дан 30 November 2019 в 02:33
поделиться

Один из способов сделать это - сохранить текущее время и дату загрузки программного обеспечения в зашифрованном файле, который следует использовать вместе с пакетом.

Другой способ - сохранить файл на компьютере пользователя и постоянно сверяться с вашей жестко заданной датой в программном обеспечении с этим файлом.

0
ответ дан 30 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: