Захист від копіювання, MS Office, Програмні керівництва, статті

Такий захист необхідна, якщо Ви вирішите перешкодити кому або зробити копію вашої програми. Це в першу чергу стосується комерційних розробок. Хоча у випадку з Access додатками це дещо спірне питання: а чи потрібна кому то Ваша програма крім Вас і іноді замовнику, для якого вона робилася? Адже навіть у таких, здавалося б, стандартних додатках типу «Складський облік» досить часто доводиться що то правити під конкретного замовника. В цьому особливість розповсюдження баз даних. Тим не менш, розглянемо спосіб, що утруднює копіювання програми. Мова піде про реєстрацію.


Щоб не можна було «красти» програму, її потрібно прив’язати до конкретного комп’ютера. Робиться це за допомогою спеціальних функцій, що визначають унікальні параметри машини: номер вінчестера, ім’я комп’ютера, процесор, ім’я користувача і т. д. Загальна схема розповсюдження програм, використовуючи сервіс реєстрації така:



Розробник вільно поширює дистрибутив програми. При установці на комп’ютері та першому запуску програма опитує комп’ютер і формує унікальну контрольну суму, яка називається “Реєстраційний номер “. Потім програма здійснює перетворення реєстраційного номера в” реєстраційний ключ “.

“Реєстраційний номер” пред’являється користувачеві, а у відповідь користувач повинен ввести “реєстраційний ключ”, який програма порівняє зі своїм.

Користувач повинен зв’язатися з розробником і повідомити “реєстраційний номер” програми.


Розробник повинен (запустивши спец.процедуру реєстрації) повідомити користувачеві “реєстраційний ключ”.


Користувач вводить “реєстраційний ключ”. Якщо він вірний, то програма запам’ятовує його і при подальших запусках НЕ опитує користувача.


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


В демо-режимі програму потрібно в чомусь обмежити. Для баз даних це зазвичай обмеження по кількості записів, або неможливість роздруківки якого або важливого звіту. Реалізується це за допомогою функції, яка запускається, наприклад, при спробі роздрукувати звіт, і якщо програма не зареєстрована, блокує друк. Те ж і у випадку з обмеженням кількості записів: якщо на подію форми «після поновлення» повісити процедуру, яка перевіряє реєстрацію і яка вважає максимальну кількість записів у цій таблиці (джерело даних форми), то можна зробити умова – якщо записів більше ніж можна, то властивості форми «Дозволити додавання» привласнити False і видалити «зайву» запис.


Form.AllowAdditions = False


Подібне обмеження реалізовано в прикладі. Отже, схема така:



Через макрос AutoExec запускаємо функцію SetReferences (), Яка в свою чергу запускає функцію isLicense, Яка перевіряє реєстрацію. Потім зчитується номер вінчестера, шифрується (fShifrDrv) І записується в поле SystBase службової таблиці tAdminCop.


У цьому ж макросі після запуску функції слід запуск стартової форми frmStart. А от в ній, при подію «Відкриття» відбувається порівняння номера вінчестера з тим, що зберігається в таблиці. Збігаються – добре, ні – вихід з програми. Подібну процедуру можна повісити і на інші «важливі» форми.


Якщо номер вінчестера правильний, додаток відкривається. Якщо isLicense = True, то повнофункціональний режим, інакше – демо.


Для реєстрації програми (перехід в повнофункціональний режим) служить функція RegKluch. Вона шифрує реєстраційний номер, сформований програмою. У розробника повинен бути «генератор» – програма з аналогічною функцією. Користувач надсилає розробнику реєстраційний номер, розробник запускає генератор, вводить номер в поле «№ версії», ставить курсор в поле «Ключ» – і відповідно отримує його (на подію «фокус в полі» коштує процедура RegKluch). Потім він відсилає ключ користувачеві.


Користувач вводить ключ в поле форми реєстрації, тисне «Зареєструвати», і програма переходить в повноцінну версію.


У доданому прикладі показана тільки прив’язка до номера вінчестера. Однак, якщо користувач встановить інший і запросить заново пройти реєстрацію? А раптом, він бреше, і насправді його попросив знайомий, встановив Вашу програму і хто хоче «на халяву» їй скористатися? Тому, дана система реєстрації не заперечує, а, навпаки, вимагає наявності всіх інших засобів захисту: адміністрування, шифрування і MDE-інтерфейс. Якщо, наприклад, при формуванні реєстраційного номера враховується багато констант (наприклад, ім’я комп’ютера, ім’я користувача, назву процесора і т.д.), то можна реєстраційний номер складати з частин. Наприклад, цифри 1 – 4 – це ім’я комп’ютера, 5 – 9 – це номер вінчестера і т. д. Можна звичайно і більш хитро, тут повна свобода творчості. Тепер, якщо Вам скажуть, що поміняли вінчестер, перевірте, чи залишилися колишніми ім’я комп’ютера, ім’я користувача, версія BIOS і т. д. Якщо все змінилося – стало бути, Вас обманюють (а може й справді, поміняли все «залізо»). Але, як відомо, залізо не міняють щотижня, і поодиноким випадкам можна і повірити.


Тепер випробуємо:



Запускаємо програму. На стартовій формі з’явився реєстраційний номер, стало бути, вважали і зашифрували номер вінчестера. Так само видно, що програма не зареєстрована. Про це повідомляє напис червоного кольору. Тиснемо на кнопку «Відкрити». На формі, що з’явилася бачимо попередження про максимальну кількість записів – 10. Перевіряємо: вводимо нові записи, і на десятій додавання закривається.


Тепер спробуємо зареєструвати програму. Відкриваємо додаток «Генератор». Копіюємо з поля «Реєстр. номер »в буфер значення і вставляємо його у відповідне поле форми – генератора. При переході на поле «Ключ» отримуємо його значення. Копіюємо його в буфер.


Тепер на стартовій формою додатка тиснемо кнопку «Реєстрація». У формі, що з’явилася вставляємо з буфера в поле значення ключа, тиснемо «Зареєструвати». Все, програма готова до повноцінної роботи. Щоб переконається в цьому, пробуємо ввести записів в табличну форму більше 10.


Приклад, як це все працює, Ви можете завантажити нижче.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*