Заборона зміни системної дати

Заборона зміни системної дати.

nbspnbspnbspnbspnbspnbspnbspnbsp Як відомо, будь-які налаштування програми, які необхідно зберегти після виходу з неї, можна зберігати або в системному реєстрі, або в додатковому файлі з розширенням, читаним тільки програмою, а також з будь-яким іншим розширенням, в тому числі ".ini".







nbspnbspnbspnbspnbspnbspnbspnbsp У деяких програмах при запуску необхідно автоматично відключати можливість користувача залізти в реєстр, наприклад. Це можуть бути програми-віруси, але можуть бути і програми, що виконують корисні функції з адміністрування системи. Наприклад, програма, яка контролює дії пользовтеля з правами "Гостя" в ОС WindowsXP.

nbspnbspnbspnbspnbspnbspnbspnbsp Часто розробника ShareWare - програм стикаються з необхідністю вирішити користувачеві користуватися незареєстрованої версією програми лише протягом певного періоду часу - зазвичай місяці. При першому запуску в реєстр або файл записується дата першого запуску програми. Від неї і ведеться відлік часу, що залишився. Заборона на більш тривале використання легко обійти, якщо змінити системну дату комп'ютера. Поставить користувач після закінчення місячного періоду системну дату на місяць назад, і знову у нього цілий місяць роботи незареєстрованої версії! І так до нескінченності.

nbspnbspnbspnbspnbspnbspnbspnbsp Так як же заборонити змінювати системний час або дату незареєстрованому користувачеві? Існує кілька відомих способів, що мають свої переваги і недоліки, які діляться на принципово відрізняються групи:

I.Программірованіе заборони на зміну системних дати і часу.

1. Заборонити можливість зміни системних дати і часу в системному реєстрі просто не можна.
2. Видалення або перейменування в WindowsXP файлу "C: \ Windows \ System32 \ timedate.cpl", що зберігає настройки властивостей часу і дати, нічого не дає, так як при спробі отримати доступ до управління властивостями системних дати і часу через подвійне клацання лівою кнопкою миші по годинах у системному треї створюють даний файл управління з властивостями за замовчуванням.
3. Програмувати заборона зміни системних дати або часу взагалі не має сенсу, так як поточні настройки може легко змінити будь-який більш-менш просунутий користувач, минаючи системний реєстр Windows, через DOS або командний рядок. Натисніть "Пуск" - "Виконати". Уведіть в текстове поле: "command.com", натисніть "ОК". Тепер наберіть "Date" або "Time" і вільно міняйте те, що Вам потрібно - дату або час.







II.Программірованіе контролю за зміною системних дати або часу.

1. Обрати інший спосіб обмежень для незарігістрірованной версії програми. Цей шлях, вирішивши одну проблему, обязатльно поставить іншу.
2а. Зберігати дату запуску програми кожен запуск, а перед збереженням перевіряти, чи не стала дата більш ранньої, ніж дата попереднього запуску?
2б. Для програм, що працюють у фоновому режимі, для яких важливий заборона на зміна не дати, а часу, запам'ятовувати час кожної активації, а через інтервал часу до наступної активації при черговій активації перевіряти, чи рівне поточний час сумі часу минулого активації і минулого інтервалу. Точної відповідності по секундах може не бути, якщо комп'ютер слабкий, тому доцільно додавати до суми максимально допустиму затримку від 0 до n секунд.
3а. Після закінчення дозволеного періоду використання незареєстрованої версії програма повинна ставити в реєстрі або у файлі спеціальну мітку, наявність якої має перевірятися під час кожного запуску програми в разі, якщо вона ще не зареєстрована. Якщо при черговому запуску програми інтервал часу з системної датою ще не закінчився, а мітка вже стоїть, значить, системна дата була переведена користувачем назад.
3б. Ставити мітки як в попередньому пункті Кілька разів протягом дозволеного періоду використання незареєстрованої версії, щоб більш хитрий користувач не зміг перевет системну дату до закінчення дозволеного часу.
4. Вважати абсолютний проміжок часу між попереднім і поточним запуском програми і додавати його до загального часу роботи програми. В цьому випадку хитрий користувач, який переведе системну дату назад, одержить не віднімання, а додавання часу до загального часу використання програми, так як додаватися до загального часу буде не величина зі знаком "-", а її модуль - Abs (x). Звичайно, є возожность перед кожним запуском програми ставити одну і ту ж системну дату.

nbspnbspnbspnbspnbspnbspnbspnbsp У способів, які працюють зі збереженням параметрів в реєстрі або у файлі, є недолік - можливість знаходження контрольних дат і міток в реєстрі і зміни їх найбільш просунутим користувачами. Допоможе крайній захід - заборона на доступ до редагування реєстру, але цей захід є явно поганим тоном в програмуванні, а тому неприпустима.

nbspnbspnbspnbspnbspnbspnbspnbsp Залишається одне - плутати сліди: при зберіганні налаштувань в реєстрі використовувати окремі гілки реєстру і не наводять на Вашу програму назви розділів і параметрів; в разі використання файлу - ховати його де-небудь в папці операційної системи, давати не веде до Вашої програмі назву, перед записом в нього кодувати інформацію, застосовувати ексклюзивне розширення. Найкращий спосіб - дублювати контрольні дати і мітки і в реєстрі, і в файлі, а потім звіряти їх відповідність при запуску програми.

І на останок:
1. Ступінь захисту завжди треба вибирати в залежності від обсягу і цінності програми, так як овчинка повинна відповідати тій, що виробляє.
2. Слідом за особливо просунутими користувачами по ієрархії йдуть хакери. Проти лома немає прийому, так як теоретично будь-яка програма може бути зламана, будь-який захист подолана.







Схожі статті