Розробка алгоритму захисту програмного забезпечення від несанкціонованого копіювання
Спираючись на особливості прив’язки до системного реєстру для розробки захисту розробимо алгоритм його функціонування. Захист пропонується розробити у вигляді модуля програми, який буде вбудовуватись у програму, яка захищається.
Такий модуль, згідно з методу, повинен перевіряти наявність у певному ключі реєстру значення заздалегідь обраної змінної, існування якої забезпечить подальшу роботу програми. Таким чином модуль захисту повинен запускатись перед виконанням основної програми.
Саме тому алгоритм захисту складається з наступних пунктів:
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 ПРОГРАМНА РЕАЛІЗАЦІЯ ЗАХИСТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕНЯ ВІД НЕСАНКЦІОНОВАНОГО КОПІЮВАННЯ