Розробка алгоритму захисту програмного забезпечення від несанкціонованого копіювання

Спираючись на особливості прив’язки до системного реєстру для розробки захисту розробимо алгоритм його функціонування. Захист пропонується розробити у вигляді модуля програми, який буде вбудовуватись у програму, яка захищається.

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

Саме тому алгоритм захисту складається з наступних пунктів:

1. Ініціалізація модулю захисту.

При запуску програми виконується ініціалізація модулю захисту, при якій виконується створення умов необхідних для роботи з системним реєстром.

2. Перевірка наявності певної гілки реєстру.

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

3. Отримання списку змінних.

Після того, як у системному реєстрі був знайдений або створений ключ – для перевірки наявності певної змінної необхідно отримати список всіх змінних, які записані в даному ключі.

4. Перевірка наявності змінної.

Дана перевірка дозволяє перевірити наявність змінної в списку значень у ключі отриманому у попередньому пункті. Якщо в списку значень є змінна з певним ім’ям, то її значення зчитується в комірку пам’яті.

5. Перевірка значення зчитаної змінної.

Цей етап дозволяє перевірити значення, яке знаходяться в зчитаній змінній. У тому випадку, коли значення співпадає з тим, що перевіряється, то захищувана програма продовжує виконання у звичайному режимі, в інакшому випадку – на екран виведеться повідомлення про те, що дана програма не зареєстрована на даному персональному комп’ютері та завершує свою роботу.

Структурну схему захисту представлено на рисунку 2.4.

Ініціалізація модуля захисту захисту
Відкриття певної гілки реєстру
Створення даної гілки реєстру
Отримання списку змінних
Наявність ключової гілки реєстру  
ні
так

Наявність змінної
так
Значення зчитується в комірку пам’яті
Значення зчитаної змінної «888»
Закриття програми
Запуск програми
так
ні
ні

Рисунок 2.4 – Структурна схема алгоритму

На рисунку 2.4 зображено схему модуля захисту програмного забезпечення, на якій показані кроки по яким буде відбуватись захист програмного забезпечення.

Вибір мови програмування

Виходячи з особливостей алгоритму модуля захисту та особливостей системного реєстру оберемо мову програмування.

На сьогоднішній день існує велика кількість мов програмування. Кожна з них має свої переваги та недоліки. Найпопулярнішими мовами серед програмістів є C# та Java. Для реалізації захисту програмного забезпечення від несанкціонованого копіювання, шляхом прив’язки до системного реєстру було обрано мову програмування C#, так як саме за допомогою неї можна як найкраще реалізувати даний захист.

C# – це об’єктно-орієнтована мова програмування. Розроблена в 1998-2001 роках групою інженерів під керівництвом Андерса Хейлсберга в компанії Microsoft, як мова розробки для платформи Microsoft .Net Framework. [11]

Перейнявши багато що від своїх попередників – мов C++, Java – C#, спираючись на практику їх використання, виключає деякі моделі, що зарекомендували себе проблематичними при розробці програмних систем.

Також, C#, на відмінну від Java, містить велику кількість функцій, які полегшують роботу з системним реєстром та має ряд переваг над іншими об’єктно-орієнтованими мовами програмування, серед яких виділяють [12]:

- C# створювався паралельно з каркасом . Net Framework і повною мірою враховує всі його можливості – як FCL, так і CLR;

- C# є повністю об'єктно-орієнтованою мовою, де навіть типи, вбудовані в мову, представлені класами;

- C# є потужною об'єктною мовою з можливостями спадкоємства і універсалізації;

- C# є спадкоємцем мов C/C++, зберігаючи кращі риси цих популярних мов програмування. Спільний з цими мовами синтаксис, знайомі оператори мови полегшують перехід програмістів від С++ до C#;

- завдяки каркасу .Net Framework, який став надбудовою над операційною системою, програмісти C# отримують ті ж переваги роботи з віртуальною машиною, що і програмісти Java. При цьому навіть підвищується ефективність коду, оскільки виконавче середовище CLR є компілятор проміжної мови, в той час як віртуальна Java-машина є інтерпретатором байт-коду;

- на відмінну від Java, потужна бібліотека каркаса підтримує зручність побудови різних типів додатків на C#, дозволяючи легко будувати Web-служби, інші види компонентів, досить просто зберігати і отримувати інформацію з бази даних та інших сховищ даних;

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

3 ПРОГРАМНА РЕАЛІЗАЦІЯ ЗАХИСТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕНЯ ВІД НЕСАНКЦІОНОВАНОГО КОПІЮВАННЯ

Наши рекомендации