Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.114.94] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Простенькая программа, без инсталяшки, должна после определенной даты, хранящейся в программе, перестать запускаться.
Но вот есть проблема: как можно отследить, что пользователь перевел время/дату назад? Реестр можно подправить, файлы программы можно заново скопировать... Думал при старте определять время последнего доступа в каталоги "Program Files" и Windows, и брать самое позднее время/дату, но ведь после запуска система исправит на время, установленное пользователем. Сканировать каталог и смотреть время у каждого файла - во-первых это долго, во-вторых, если старенький винт, то грохот будет... А сканировать определенное число файлов, так можно не попасть на самый свежий... Как быть? |
Сообщ.
#2
,
|
|
|
Самый надежный вариант, при наличии инета, это - NTP, опрос серверов времени.
Добавлено Если без инета, то "осмотр" некоторого множества, скажем так, "ключевых" файлов и времен их создания/доступа: %SYSTEMDRIVE%\hiberfil.sys %USERPROFILE%\NTUSER.DAT %USERPROFILE%\NTUSER.DAT{*} %USERPROFILE%\Local Settings\History\History.IE5\* %USERPROFILE%\AppData\Roaming\Mozilla\Firefox\Profiles\* ... ... ... Ну и в таком духе ... Ну и ждать кряка программы, если программа норм - быстро ее вылечат. |
Сообщ.
#3
,
|
|
|
Спасибо!
Тут не только без интернета, да еще на некоторых ПК стоит Windows 98! А что в ней схожего есть? |
Сообщ.
#4
,
|
|
|
Цитата Vladimir_ @ должна после определенной даты, хранящейся в программе, перестать запускаться. Предлагаю заменить дату на количество запусков. |
Сообщ.
#5
,
|
|
|
Цитата B.V. @ Предлагаю заменить дату на количество запусков. Это самое простое - что обходится, даже без кряков. Монитор реестра + Файловый монитор + контроль операций удаления, создания и записи (чтение не интересует). Пишется loader который приводит все в первозданное состояние. ИМХО, нужно читать даты тех файлов, которые пишет не эта программа, а системные, временные, кэши разные. |
Сообщ.
#7
,
|
|
|
Цитата JoeUser @ Это самое простое - что обходится, даже без кряков. То, что ты описал далее, на самом деле и является "кряком". А насчет "простое" -- это проще, чем поменять системную дату? |
Сообщ.
#8
,
|
|
|
Цитата B.V. @ То, что ты описал далее, на самом деле и является "кряком" Ну да, я имел ввиду - патчи. Цитата B.V. @ А насчет "простое" -- это проще, чем поменять системную дату? В том то и дело, если ловить действия программы по файлам и реестру, то: 1) В случае счетчика запусков - их нужно где-то хранить, нашли хранилище(а) - в лоадере чистим их 2) В случае анализа произвольных файлов на время записи/доступа - их тыщу, обрабатываются быстро, а вот зачем их прога читает, нужно голову ломать. В итоге, "счетчик" я бы обошел легче. |
Сообщ.
#9
,
|
|
|
Тут надо найти какие-то хитрые файлы, которые после смены даты/времени не сразу меняют свою дату/время - а то как отследить, если система после перезагрузки сразу изменит?
|
Сообщ.
#10
,
|
|
|
В чистом виде никак, имхо проще сделать триал, с реально вырезанным функционалом, а не просто заблоченным по какому либо критерию.
|
Сообщ.
#11
,
|
|
|
Да у меня простенькая программа, нужно так же просто ограничить время работы с отслеживанием перевода даты назад. И ломать смысла нет
|
Сообщ.
#12
,
|
|
|
При реализации этой задачи возможны интересные препятствия. Указанный формат не соответствует правильному, хотя эта информация из RFC. Впрочем, Wireshark декодирует и покажет всё как надо. --- Удивительно, уже не первый раз сталкиваюсь. Читаешь RFC, а потом оказывается, что "не соответствует". |
Сообщ.
#13
,
|
|
|
Цитата Vladimir_ @ Тут надо найти какие-то хитрые файлы, которые после смены даты/времени не сразу меняют свою дату/время - а то как отследить, если система после перезагрузки сразу изменит? "Против лома - нет приема!" Совет простой - не зацикливайся на 100%-ном отказе работы по лимиту календаря. Напиши шрифтом стопицотого размера, что "программа по истечении времени и без регистрации будет нестабильна на 77%". Нарушения ищи по файлам, на которые я тебе дал наколку, молча выгружай прогу спустя 3-17 мин, как- только обнаружен ахтунг. Для энд-юзера это гемор аццкий и уверенный аргумент достать лопатник и отслюнявить лавэ |
Сообщ.
#14
,
|
|
|
В общем поигрался с переводом времени и перезагрузкой винды.
Пока нашел какие файлы искать, которые после перезагрузки не меняют свои дату/время: C:\Windows\*.ini TEMP\*.* Добавлю еще время каталогов C:\Windows, С:\RECYCLER и самой программы. Думаю, что этого для такой проги будет достаточно. И еще попутные вопросы: 1. чем быстрее получить время создания/модификации ОДНОГО каталога или файла? Ведь он может быть не доступен. Для поиска по маске пользуюсь FindFirstFile() 2. поиск файлов засуну в поток, стартанув его при старте проги. Допустим было найдено, что время перевели. Как более-менее правдоподобно аварийно завершить программу? Т.е. чтобы было видно, что это не защита сработала, а ошибка в проге? |
Сообщ.
#15
,
|
|
|
Цитата Vladimir_ @ И еще попутные вопросы: 1. чем быстрее получить время создания/модификации ОДНОГО каталога или файла? Ведь он может быть не доступен. Для поиска по маске пользуюсь FindFirstFile() Быстрее API не найдешь. Цитата Vladimir_ @ 2. поиск файлов засуну в поток, стартанув его при старте проги. Допустим было найдено, что время перевели. Как более-менее правдоподобно аварийно завершить программу? Т.е. чтобы было видно, что это не защита сработала, а ошибка в проге? Самое, имхо, правильное - сообщать не сразу по факту обнаружения, а спустя 7-27 минут. Это усложнит реверс. |