close

Вход

Забыли?

вход по аккаунту

?

zpz kursova

код для вставкиСкачать
ЗМІСТ
ВСТУП5
1 ОГЛЯД СИСТЕМ ЗАХИСТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ6
1.1Класифікація систем захисту програмного забезпечення6
1.2Переваги і недоліки основних систем захисту10
2 РОЗРОБКА АЛГОРИТМУ ПЕРЕХОПЛЕННЯ ПРОЦЕСУ16
2.1 Розробка алгоритму перехоплення процесу16
2.2 Вибір мови програмування16
3 РЕАЛІЗАЦІЯ ПРОГРАМИ ПЕРЕХОПЛЕННЯ19
3.1Розробка програми перехоплення19
3.2Інструкція користувача20
3.3 Тестування роботи програми захисту22
ВИСНОВКИ24
ПЕРЕЛІК ПОСИЛАНЬ25
ДОДАТКИ
Додаток А26
Додаток Б28
ВСТУП
У зв'язку із стрімким розвитком інформаційних технологій можна спостерігати розширення ринку програмного забезпечення і телекомунікаційних технологій, тому системи захисту програмного забезпечення (СЗПЗ) широко поширені і знаходяться в постійному розвитку. Необхідність використання систем захисту обумовлена багатьма проблемами, серед яких варто виділити: незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту (промислове шпигунство), несанкціоноване використання ПЗ (крадіжка і копіювання); несанкціонована модифікація ПЗ з метою введення програмних зловживань; незаконне поширення і збут ПЗ (піратство). [1] Основна причина створення систем захисту - економічна. Програмний продукт є товаром, який має автора, ціну, гарантії якості. Цей товар можна купити, продати, обміняти тощо. І як будь-який товар, він може бути об'єктом крадіжки та незаконного використання. Тому варто провести аналіз засобів захисту і засобів дослідження програм, розглянути недоліки існуючих засобів дослідження програм, що дозволить розробляти нові способи захисту.
Системи захисту програмного забезпечення (СЗПЗ) широко поширені і знаходяться в постійному розвитку, завдяки розширенню ринку програмного забезпечення і телекомунікаційних технологій. Необхідність використання систем захисту СЗПЗ обумовлена поруч проблем, серед яких варто виділити: незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту (промислове шпигунство); несанкціоноване використання ПЗ (крадіжка і копіювання); несанкціонована модифікація ПЗ з метою введення програмних зловживань; незаконне поширення і збут ПЗ (піратство).
1 ОГЛЯД СИСТЕМ ЗАХИСТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
З розвитком і ускладненням засобів, методів і процесів обробки інформації підвищується залежність сучасного суспільства від рівня безпеки використовуваних ними інформаційних технологій. Для забезпечення високого рівня захисту ПЗ, застосовуються різноманітні системи захисту.
1.1 Класифікація систем захисту програмного забезпечення
На сьогоднішній день Україна має статус країни з найвищим у світі рівнем комп'ютерного піратства. Згідно з дослідженнями організації BusinessSoftwareAlliance, рівень комп'ютерного піратства в Україні станом на 2009 оцінюється в 85% від ринку всього програмного забезпечення (ПЗ)
Незважаючи на закони України "Про авторське право й суміжні права" і "Про поширення екземплярів аудіовізуальних творів, фонограм, відеограм, комп'ютерних програм, баз даних", нелегальне копіювання, комп'ютерні диверсії (віруси, "бомби", "трояни"), а також кількість фінансових злочинів з використанням обчислювальної техніки не зменшується. Тому безпека інформації є однією з найважливіших проблем інформаційних технологій. А за останні роки ситуація ще більше погіршилась. І уже зараз міжнародний альянс інтелектуальної власності рекомендує надати Україні статус Priority Foreign Country в його списку країн, що порушують авторське право.
Економічні втрати виробників ПЗ, що виражаються у вигляді упущеної вигоди та моральної шкоди, зумовили необхідність застосування спеціальних заходів, що перешкоджають тіньовому обороту, які можна умовно поділити на законодавчі, організаційні та технічні. Найбільш популярними стали технічні заходи, названі системами захисту програмного забезпечення (СЗПЗ). Актуальність даної теми обумовлена необхідністю розробки нових підходів для підвищення результативності захисту програмного забезпечення (ПЗ) від руйнуючих впливів з метою забезпечення авторських прав розроблювачів програм.
Для розробника, перед яким стоїть завдання розробити певну систему захисту для програмного забезпечення, важливо чітко уявляти, що саме і від чого потрібно захистити. Так як, яким би не був захист - він рано чи пізно буде зламаний. Тобто захист повинен бути таким, щоб за час його подолання була випущена нова версія програмного забезпечення (чи створений новий захист). Для кращого захисту потрібно поєднувати методи захисту. Таким чином, підходити до проектування систем захисту (СЗ) у кожному випадку потрібно індивідуально.   
За рахунок того, що програмне забезпечення набуває розвитку і поширення, системи захисту стають більш потрібними та цінними.
Захищати програмний продукт потрібно через низку проблем яка існує в сьогоденні, а саме: 
‒ промислове шпигунство (незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту); 
‒ крадіжка і копіювання (несанкціоноване використання програмного забезпечення);  
‒ несанкціонована модифікація програмного захисту (з метою впровадження програмних зловживань); 
‒ піратство (незаконне поширення і збут програмного забезпечення).
Існуючі системи захисту програмного забезпечення можна класифікувати по ряду ознак, серед яких можна виділити:
* метод встановлення;
* використовувані механізми захисту;
* принцип функціонування.
Системи захисту ПЗ за методом встановлення можна розділити на:
* системи, встановлювані на скомпільовані модулі ПЗ;
* системи, що вбудовуються у вихідний код ПЗ до компіляції;
* комбіновані.
Системи першого типу найбільш зручні для виробника ПЗ, оскільки вони встановлюються на цілком готове й протестоване ПЗ, а тому є і найбільш популярними. У той же час стійкість цих систем досить низька (у залежності від принципу дії СЗ), тому що для обходу захисту досить визначити точку завершення роботи модуля захисту і запуску захищеної програми, а потім зберегти програму в незахищеному вигляді.[2]
Системи другого типу незручні для виробника ПЗ, оскільки виникає необхідність навчати персонал роботі з програмним інтерфейсом (API) системи захисту з вихідними грошовими і часовими витратами. Крім того, ускладнюється процес тестування ПЗ і знижується його надійність, тому що окрім самого ПЗ помилки може містити API системи захисту або процедури, що його що використовують. Але такі системи є більш стійкими до атак, тому що в них зникає чітка межа між системою захисту і самим ПЗ.
Найбільш стійкими є комбіновані системи захисту. Зберігаючи переваги і недоліки систем інших типів, вони максимально затрудняють аналіз і дезактивацію своїх алгоритмів.
По використовуваних механізмах захисту, СЗ можна класифікувати на 3 типи:
* системи, що використовують складні логічні механізми;
* системи, що використовують шифрування захищаючого ПЗ;
* комбіновані системи.
Системи першого типу використовують різні методи і прийоми, орієнтовані на утруднення дизасемблювання, налагодження й аналізу алгоритму СЗ. Цей тип СЗ є найменш стійким до атак, тому що для подолання захисту досить проаналізувати логічні процедури перевірки і належним чином їх модифікувати. Більш стійкими є системи другого типу. Для дезактивації таких захистів необхідно визначення ключа дешифрування ПЗ. Найстійкішими до атак є комбіновані системи.
Для захисту ПЗ використовується ряд методів:
а) алгоритми заплутування - використовуються хаотичні переходи в різні частини коду, упровадження помилкових процедур, перекручування кількості реальних параметрів процедур ПЗ, розкид ділянок коду по різних областях ОЗУ;
б) алгоритми мутації - створюються таблиці відповідності операндів - синонімів і заміна їх один на одного при кожному запуску програми за визначеною схемою або випадковим чином, випадкові зміни структури програми;
в) алгоритми компресії даних - програма упаковується, а потім розпаковуються в міру виконання;
г) алгоритми шифрування даних - програма шифрується, а потім розшифровуються в міру виконання;
д) обчислення складних математичних виразів у процесі відпрацювання механізму захисту - елементи логіки захисту залежать від результату обчислення значення якої-небудь формули або групи формул;
е) методи утруднення дизасемблювання - використовуються різні прийоми, спрямовані на запобігання дизасемблювання в пакетному режимі;
ж) методи утруднення налагодження - використовуються різні прийоми, спрямовані на ускладнення налагодження програми;
з) нестандартні методи роботи з апаратним забезпеченням - модулі системи захисту, звертаються до апаратури ЕОМ, минаючи процедури ОС, і використовують маловідомі або недокументовані її можливості.
У свою чергу, зловмисники так само застосовують ряд методів і засобів для порушення систем захисту. Ситуація протистояння розробників СЗПЗ і зловмисників постійно змінюється за рахунок комбінування уже відомих методів захисту і нападу, а так само за рахунок створення і використання нових методів. За принципом функціонування СЗ можна підрозділити на наступні:
* пакувальники/шифрувальники;
* СЗ від несанкціонованого копіювання;
* СЗ від несанкціонованого доступу (НСД). [3]
1.2 Переваги і недоліки основних систем захисту
Розглянемо переваги та недоліки основних систем захисту ПЗ виходячи з принципів їхнього функціонування.
Основною метою пакувальників/шифраторів було зменшення обсягу модуля, що виконується, на диску без збитку для функціональності програми, але пізніше на перший план вийшла мета захисту ПЗ від аналізу його алгоритмів і несанкціонованої модифікації. Для досягнення цієї мети використовуються алгоритми компресії даних, прийоми, зв'язані з використанням недокументованих особливостей операційних систем і процесорів, шифрування даних, алгоритми мутації, заплутування логіки програми, приведення ОС у нестабільний стан на час роботи ПЗ. [4]
Позитивні сторони:
* в період безпечного використання, дані системи забезпечують високий рівень захисту ПЗ від аналізу його алгоритмів;
* методи пакування/шифрування набагато збільшують стійкість СЗ інших типів.
Негативні сторони:
* практично усі застосовувані методи сповільнюють швидкість виконання коду ПЗ;
* шифрування/пакування коду ПЗ викликає утруднення при оновленні і виправленні помилок;
* можливе підвищення апаратно - програмних вимог ПЗ;
* у чистому вигляді дані системи не застосовні для авторизації використання ПЗ;
* ці системи застосовні лише до ПЗ невеликого обсягу;
* даний клас систем уразливий, тому що програмний код може бути розпакований або розшифрований для виконання;
* пакування і шифрування коду, що виконується, вступає в конфлікт із забороною самомодифікуючого коду в сучасних ОС.
Системи захисту від несанкціонованого копіювання здійснюють "прив'язку" ПЗ до дистрибутивного носія (гнучкий диск, CD і ін.). Даний тип захистів заснований на глибокому вивченні роботи контролерів, їх фізичних показників, нестандартних режимах розбивки, читання та запису. При цьому на фізичному рівні створюється дистрибутивний носій, що володіє майже неповторними властивостями (нестандартна розмітка носія інформації або запис на нього додаткової інформації - пароля або мітки), а на програмному - створюється модуль, налаштований на ідентифікацію й аутентифікацію носія за його унікальним властивостями. Позитивні фактори:
* утруднення нелегального копіювання і поширення ПЗ;
* захист прав користувача на придбане ПЗ.
Негативні фактори:
* велика трудомісткість реалізації системи захисту;
* уповільнення продажів через необхідність фізичної передачі дистрибутивного носія інформації;
* підвищення системних вимог через захист (наявність нагромаджувача);
* зниження відмовостійкості ПЗ;
* загроза крадіжки захищеного носія.
Системи захисту від НСД здійснюють попередню або періодичну аутентифікацію користувача ПЗ або його комп'ютерної системи шляхом запиту додаткової інформації. До цього типу СЗ можна віднести системи парольного захисту ПЗ, системи "прив'язки" ПЗ до комп'ютера користувача, апаратно - програмні системи з електронними ключами і системи з "ключовими дисками". У першому випадку "ключову" інформацію вводить користувач, у другому - вона знаходиться в унікальних параметрах комп'ютерної системи користувача, у третьому - "ключова" інформація зчитується з мікросхем електронного ключа й у четвертому випадку вона зберігається на диску.
Захист програми методом авторизації. Аутентифікація та авторизація - це два базових механізми, які повинні використовуватися у всіх додатках. Існує два типи управління ідентифікацією:
- на основі ролей (role-based identity);
- на основі тверджень (claims-based identity).
При використанні ідентифікації на основі ролей, користувач надає ідентифікаційні дані (credentials), які використовуються додатком для аутентифікації користувача. Після цього користувач "відображається" на відповідну групу і отримує права , відповідно з членством в тій чи іншій групі. Ідентифікація на основі ролей є традиційним способом для аутентифікації і авторизації користувачів. До найбільш популярних технологій авторизації на основі ролей відносяться Windows Identity (Domain Join, Kerberos ), провайдери членства (membership providers) ASP.NET і SQL.
При використанні ідентифікації на основі тверджень аутентифікація виконується поза "кордонів" додатка. Додатки встановлюють довірчі відносини з сервісами Security Token Services (STSs) . Користувачі аутентифікують себе, використовуючи ці сервіси і отримують маркер (token), що містить колекцію тверджень - інформацію про користувача. Такий маркер зазвичай підписаний і зашифрований за допомогою публічного ключа додатку. Коли додаток отримує маркер, користувач вже аутентифікований - все, що потрібно, це відкрити маркер і обробити, чи міститься в ньому інформація. Використання ідентифікації на основі тверджень дозволяє реалізувати сценарії федерації та делегації аутентифікації.
Довірчий рівень може бути встановлений навіть між різними STS-сервісами - клієнт може аутентифікуватися за допомогою локального сервісу і послати маркер сервісу, якому "довіряє" додаток. Цей сервіс використовує отриманий маркер для створення нового маркера, який вже буде переданий додатком. До найбільш популярних технологій авторизації на основі тверджень відносяться Active Directory Federation Services (ADFS) 2.0, Windows Identity Foundation (WIF) і Azure AppFabric Access Control Service (ACS).
У Windows Azure підтримується як авторизація на основі ролей, так і авторизація на основі запитів.
В даній курсовій роботі використовується ідентифікація на рівні тверджень, тому що вона є більш простою в реалізації і може бути винесена "поза" додатка. Зазвичай, при використанні такої ідентифікації зменшується число облікових записів, якими необхідно керувати, а централізація аутентифікації спрощує перехід на більш захищені методи аутентифікації по мірі їх появи. До складу Windows Azure AppFabric входить масштабований, надійний і простий STS- сервіс, який може бути використаний як у "хмарних", так і в традиційних додатках. Парольний захист. На сьогоднішній день цей клас СЗПЗ є найпоширенішим. Основний принцип роботи даних систем полягає в ідентифікації й аутентифікація користувача ПЗ шляхом запиту додаткових даних, якими можуть бути: назва фірми або ім'я і прізвище користувача і його пароль або тільки пароль/реєстраційний код. Така інформація може запитуватися в різних ситуаціях, наприклад, при запуску програми, після закінчення терміну безкоштовного використання ПЗ, при виклику процедури реєстрації або в процесі установки на ПК. [5]
Процедури парольного захисту прості в реалізації. Більшість парольних СЗПЗ використовують логічні механізми, що зводяться до перевірки правильності пароля/коду і запуску або не запуску ПЗ, у залежності від результатів перевірки. Існують також системи, що шифрують ПЗ і використовують пароль або похідну від нього величину як ключ дешифрації. Звичайно вони реалізовані у виді захисного модуля і допоміжних бібліотек і встановлюються на вже скомпільовані модулі ПЗ.
Слабкою ланкою парольних захистів є блок перевірки правильності введеного пароля/коду. Для такої перевірки можна порівнювати введений пароль із записаним у коді ПЗ правильним або з правильно згенерованим із введених додаткових даних паролем. Можливо також порівняння похідних величин від введеного і правильного паролів, наприклад їхню хеш - функцію, у такому випадку в коді можна зберігати тільки похідну величину, що підвищує стійкість захисту. Шляхом аналізу процедур перевірки можна знайти реальний пароль, записаний у коді ПЗ, знайти правильно згенерований пароль із введених даних або створити програму для перебору паролів для визначення пароля з потрібною хеш - сумою. Крім того, якщо СЗПЗ не використовує шифрування, досить лише примусово змінити логічні перевірки для одержання безперешкодного доступу до ПЗ.
Системи, що шифрують, більш стійкі до атак, але при використанні найпростіших або некоректно реалізованих криптоалгоритмів є небезпека дешифрування ПЗ. Для всіх парольних систем існує загроза перехоплення пароля при його введенні авторизованним користувачем. Крім того, у більшості СЗПЗ даних типів, процедура перевірки використовується лише один раз, звичайно при реєстрації або установці ПЗ, після чого система захисту просто відключається, що створює реальну загрозу незаконного копіювання ПЗ.
Позитивні сторони:
* надійний захист від зловмисника - непрофесіонала;
* мінімальні незручності для користувача;
* можливість передачі пароля/коду по мережі;
* відсутність конфліктів із системним і прикладним ПЗ та АЗ;
* простота реалізації і застосування;
* низька вартість.
Негативні сторони:
* низька стійкість більшості систем захисту даного типу;
* користувачеві необхідно запам'ятовувати пароль/код.
Системи "прив'язки" ПЗ. Системи цього типу при встановленні ПЗ на ПК користувача здійснюють пошук унікальних ознак комп'ютерної системи або вони встановлюються самою системою захисту. Модуль захисту в самому ПЗ налаштовується на пошук і ідентифікацію даних ознак, по яких надалі визначається авторизоване або неавторизоване використання ПЗ, при якому можливе застосування методик оцінки швидкісних і інших показників процесора, материнської плати, додаткових пристроїв, ОС, читання/запису мікросхеми енергонезалежної пам'яті, запис схованих файлів. [6]
Слабкою ланкою такого захисту є той факт, що на ПК користувача ПЗ завжди запускається на виконання, що призводить до можливості примусового збереження ПЗ після відпрацювання системи захисту, дослідження самого захисту і виявлення даних, використовуваним СЗПЗ для аутентифікації ПК користувача.
Позитивні фактори:
* не потрібно додаткових апаратних засобів для роботи захисту;
* утруднення несанкціонованого доступу до скопійованого ПЗ;
* легкий у застосуванні;
* "невидимість" СЗПЗ для користувача.
Негативні фактори:
* помилкові спрацювання СЗПЗ при будь-яких змінах у параметрах ПК;
* низька стійкість при доступі зловмисника до ПК користувача;
* можливість конфліктів із системним ПЗ.
Загалом, системи, що шифрують, вважаються найстійкішими до злому, мають низьку вартість та мінімальні незручності для користувача.
2 РОЗРОБКА АЛГОРИТМУ ПЕРЕХОПЛЕННЯ ПРОЦЕСУ В даній курсовій роботі розглянуто один з прикладів перехоплення процесу (в даному випадку роботи налагоджувача). 2.1 Розробка алгоритму перехоплення процесу
Після огляду особливостей різних методів, виявлення недоліків та переваг кожного з них, розроблено структуру програми. У виконанні алгоритму було виділено 4 головні кроки. Алгоритм роботи програми складається з таких кроків:
1) запуск програми; 2) запуск примітивного диспетчера задач, що проводить моніторинг усіх робочих процесів;
3) створення сигнатури;
4) виконання поставленого завдання. Для кращого розуміння алгоритму розроблено структурну схему алгоритму модуля захисту програмного забезпечення (рис. 2.4).
На основі розробленого алгоритму буде відбуватися проектування програми. Але для чіткої реалізації модуля перехоплення важливо обрати найбільш відповідну завданню мову та середовище програмування.
2.2 Вибір мови програмування
Виходячи з особливостей методу захисту, вибрано мову програмування на якій буде здійснена реалізація програмного забезпечення.
На наш час існує безліч функціональних та відповідних до поставлених завдань мов програмування, як С, С++, С#, Java. Серед цих мов було обрано С#, адже саме ця мова є зручною для створення інтерфейсних програм.
C# є досить близьким родичем мови програмування Java. Мова Java була створена компанією SunMicrosystems, коли глобальний розвиток інтернету поставив завдання розосереджених обчислень. Взявши за основу популярну мову C++, Java виключила з неї потенційно небезпечні елементи (як вказівники без контролю виходу за межі). Для розосереджених обчислень була створена концепція віртуальної машини та машинно-незалежного байт-коду, свого роду посередника між вихідним текстом програми і апаратними інструкціями комп'ютера.
C# розроблявся як мова програмування прикладного рівня для Common Language Runtime (CLR) і, як такий, залежить, насамперед, від можливостей самої CLR. Це стосується, перш за все, системи типів C#, яка відображає Base Class Library (BCL). Присутність або відсутність тих чи інших виразних особливостей мови диктується тим, чи може конкретна мовна особливість транслюватись у відповідні конструкції CLR. Так, з розвитком CLR значно збагатився й сам C#. CLR надає C#, як і всім іншим .NET-орієнтованим мовам, багато можливостей, яких позбавлені "класичні" мови програмування. Наприклад, збірка сміття не реалізована в самому C#, а проводиться CLR для програм, написаних на C# точно так само, як це робиться для програм на VB.NET. [7]
C# в даний час одна з найбільш сучасних мов програмування. Багато програм написані на цій мові, так як вона дуже легка у розумінні. У ній прибрано багато зайвих елементів, які зустрічалися в С++, такі як бібліотеки класів (тепер вони інтегровані в систему мови), або введення і виведення на екран.
Програми виконують компіляцію безпосередньо в стандартну двійкову форму. Якщо попередня програма "HelloWorld" була збережена в текстовому файлі Hello.cs, вона буде скомпільована в виконуваний файл Hello.exe.
Структури C# подібні структурам в C++ і повинні містити визначення даних і методів. Однак, на відміну від C++, структури в C # відмінні від класів і не підтримують наслідування. Однак, подібно Java, структури можуть використовувати інтерфейси.
Деякі оператори можуть бути перевантажені, а деякі ні. Зокрема, жоден з операторів призначення не може бути перевантаженим. [8]
Коли ви створюєте програму, ви створюєте один або більше класів в namespace. У ньому ж (поза класом) можливе оголошення інтерфейсів, enums і structs. Використовуючи ключові слова ви можете адресувати вміст іншого namespace.
Кожен член класу має ознаки:
* public - доступний для всього коду;
* protected - доступний тільки для наслідуваних класів;
* private - доступний тільки з класу.
Будь-який досвідчений програміст знайде щось цікаве для себе зі списку особливостей мови C#. Існують деякі нові особливості в порівнянні з Java. Типи даних фіксованого розміру (32-х бітний int і 64-х бітний long) є не тільки надзвичайно мобільними, але і спрощують програмування, так як ви завжди знаєте, з чим ви маєте справу. Дуже зручною є і автоматична "збірка сміття". В той час, як всі ці особливості мови здаються дуже привабливими, ще досить рано порівнювати C# з C++ або VisualBasic. [9]
Також наявні такі переваги як, вбудований механізм контролю версій (завдання цього механізму - домогтися того, щоб користувачам довелося замінювати або перекомпілювати старі бібліотеки тільки в тих випадках, коли це дійсно необхідно), можливість відключення контролю переповнення (ключове слово unchecked), питання взаємодії з іншими мовами (наприклад, різномовна розробка та налагодження). 3 РЕАЛІЗАЦІЯ ПРОГРАМИ ПЕРЕХОПЛЕННЯ
3.1 Розробка програми перехоплення
Виходячи з особливостей структури програми та мови програмування, програму реалізовано згідно кроків алгоритму:
Крок 1. Запуск програми. Для повноцінної роботи програми потрібно підключити бібліотеки:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;
Крок 2. Запуск примітивного диспетчера задач, що проводить моніторинг усіх робочих процесів:
private void button1_Click(object sender, EventArgs e) {
listBox1.Items.Clear();
Process[] process = Process.GetProcesses();
RegistryKey rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry32);
rk = Registry.CurrentUser.OpenSubKey("lab", true);
string[] values = rk.GetValueNames();
foreach (Process proc in process)
{
listBox1.Items.Add(proc.ProcessName + "RAM" + Convert.ToString(proc.WorkingSet64 / 1024));
}
}
Process - дає доступ до локальних та віддалених процесів, дозволяє запускати та зупиняти локальні системні процеси.[10]
Крок 3. Створення сигнатури:
private void button1_Click(object sender, EventArgs e)
{
if ((textBox1.Text != null) && (textBox2.Text != null))
{
RegistryKey rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry32);
rk = Registry.CurrentUser.OpenSubKey("lab", true);
rk.SetValue(textBox1.Text, textBox2.Text, RegistryValueKind.String);
listBox1.Items.Clear();
String[] values = rk.GetValueNames();
foreach (String v in values) { listBox1.Items.Add(v + " " + rk.GetValue(v)); }
}
}
Крок 4. Виконання поставленого завдання:
Якщо сигнатура створена і програма, яку потрібно закрити працює, то після повторного моніторингу процесів, розроблене ПЗ виконає завдання, тобто закриє небажаний процес.
if (v == proc.ProcessName)
{
string val = Convert.ToString(rk.GetValue(v));
if (val == "Close") { proc.Kill(); MessageBox.Show("Program was close"); }
}
Повний лістинг програми знаходиться у додатку А.
3.2 Інструкція користувача
Для початку роботи з програмою достатньо запустити .ехе файл. Після запуску програми, користувачу потрібно провести моніторинг робочих процесів ПК кнопкою "Показати всі процеси" (рис. 3.1). Рисунок 3.1 - Моніторинг процесів ПК
Після виклику функції моніторингу процесів, програма виведе на екран назви усіх робочих процесів на даний момент та кількість зайнятої оперативної пам'яті кожного з процесів (рис. 3.2).
Рисунок 3.2 - Перелік робочих процесів
Для створення списку програм - налагоджувачів, які потрібно закрити, слід натиснути кнопку "Перейти до сигнатури" та створити ключ реєстру з іменем процесу та дією, яку потрібно зробити при знаходженні даного процесу (рис. 3.3).
Рисунок 3.3 - Створення сигнатури
Після закінчення створення сигнатури і повторного моніторингу процесів, програма повинна закритись, це вам повідомить діалогове вікно (рис. 3.4).
Рисунок 3.4 - Успішне виконання завдання
Таким чином було розглянуто основні елементи програми. Далі модуль перехоплення варто протестувати та виявити його технічні характеристики.
3.3 Тестування роботи програми захисту
При тестуванні програми важливо звернути увагу на об'єм модуля захисту, його взаємодію з захищеною програмою та операційною системою.
Розмір програми без модуля перехоплення має об'єм в 417 КБ, а з модулем еперхвату програма займає об'єм в 514 КБ. Тобто розроблений модуль перехоплення не займає велику кількість пам'яті, а лише 97 КБ. Розроблена програма працює без помилок. Програма з модулем перхвату фактично не впливає на швидкодійність ПК та завантаженість центрального процесору (рис. 3.5).
Рисунок 3.5 - Робота диспетчера завдань
Як видно з рисунку, програма майже не впливає на роботу ЦП, та займає лише 3,8 мегабайти оперативної пам'яті. Це знову підтверджує ергономічність та зручність даного методу перехоплення процесів.
ВИСНОВКИ
В даній курсовій роботі було розглянуто мету створення систем захисту програмного забезпечення, їх класифікацію, види загроз та їх подолання. Було розглянуто основні методи захисту, їх переваги та недоліки.
Були описані всі основні системи захисту, та виявлено найпродуктивніші. Було розроблено алгоритм роботи програми, описано покроковий аналіз роботи модуля перехоплення та продемонстровано його програмне виконання. При тестуванні програми не було виявлено програмних помилок та підтверджено надійність даного методу перехоплення процесів. Модуль перехоплення не впливає на роботу комп'ютера, майже не займає дискового простору та фактично не впливає на швидкодійність системи. Це ще раз підкреслює переваги даного модуля перехоплення у порівнянні з іншими.
Отже, реалізація даного методу перехоплення була виконана успішно.
ПЕРЕЛІК ПОСИЛАНЬ
1. Анин Борис Юрьевич. Защита компьютерной информации. / Б. Ю. Анин - СПб.: БХВ - Петерберг, 2000. - 23 с.
2. Дмитрушенко Сегрій Михайлович. Системи захисту інформації від НСД: навч.посіб.для студ. ВНЗ / С. М. Дмитрушенко, Я. Г. Люменко. - Київ : ННТУ КПІ, 2010. - 328 с.
3. Зегжд Петр Дмитриевич. Проблемы безопасности программного обеспечения. / П.Д. Зегжд. - СПб.: Издательство СПбГТУ ,2000. - 69c.
4. Скляров Денис Николаевич. Искусство защиты и взлома информации. / Д. Н. Скляров. - СПб.: БХВ -Петербург, 2004. - 118 с.
5. Харченко Bасиль Cергійович. Інформаційна безпека. / В. С. Харченко. - Київ: КНТ, 2005. - 93 с.
6. Вильям Столлингс. Операционные системы. / В. Столлингс. - Санкт-Петербург, 2002. - 92 с.
7. Герберт Шилдт. Полный справочник по С#. / Г. Шилдт. - Санкт-Петербург - Киев: Вильямс, 2002. - 42 с.
8. Герберт Шилдт. С# 4.0: полное руководство. / Г. Шилдт. ООО: "И.Д. Вильямс", 2011 - 26 с.
9. Эрик Стиллмен. Изучаем C#. / Д. Грин, Э. Стиллмен. - Санкт- Петербург, 2012. - 511 с.
10. Mouse - класс [Електронний ресурс] / MSDN. - 2013. - Режим доступу до журналу: http://msdn.microsoft.com/ru-ru/library/microsoft.visualstudio.testtools.uitesting.mouse.aspx.
ДОДАТОК А
Лістинг першої частини програми
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;
namespace ZPZ4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
Process[] process = Process.GetProcesses();
RegistryKey rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry32);
rk = Registry.CurrentUser.OpenSubKey("lab", true);
string[] values = rk.GetValueNames();
foreach (Process proc in process)
{
listBox1.Items.Add(proc.ProcessName + " RAM " + Convert.ToString(proc.WorkingSet64 / 1024) );
foreach (String v in values)
{
if (v == proc.ProcessName)
{
string val = Convert.ToString(rk.GetValue(v));
if (val == "Close") { proc.Kill(); MessageBox.Show("Program was close"); }
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.Show();
}
}
}
ДОДАТОК Б
Лістинг другої частини програми
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;
namespace ZPZ4
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if ((textBox1.Text != null) && (textBox2.Text != null))
{
RegistryKey rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry32);
rk = Registry.CurrentUser.OpenSubKey("lab", true);
rk.SetValue(textBox1.Text, textBox2.Text, RegistryValueKind.String);
listBox1.Items.Clear();
String[] values = rk.GetValueNames();
foreach (String v in values) { listBox1.Items.Add(v + " " + rk.GetValue(v)); }
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
try
{
if ((textBox1.Text != null) && (textBox2.Text != null))
{
RegistryKey rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, RegistryView.Registry32);
rk = Registry.CurrentUser.OpenSubKey("lab", true);
rk.DeleteValue(textBox1.Text);
listBox1.Items.Clear();
String[] values = rk.GetValueNames(); foreach (String v in values)
{ listBox1.Items.Add(v + " " + rk.GetValue(v)); }
}
}
catch(Exception)
{MessageBox.Show("Error");}
}
}
}
4
Документ
Категория
Рефераты
Просмотров
232
Размер файла
227 Кб
Теги
zpz, лабораторная работа, лаба, kursova, лабораторная
1/--страниц
Пожаловаться на содержимое документа