Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Системна утиліта виявлення прихованих процесів

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

В нижній частині головного вікна програми буде знаходитись головне меню, структура якого зображена далі (рис. 2.1). Поряд з головним меню програми буде розміщено панель інструментів, які дають можливість увімкнути чи вимкнути один із реалізованих в програмі методів пошуку процесів. При вибору одного із пунктів головного меню автоматично вмикаються відповідні йому параметри. Вище в головному вікні… Читати ще >

Системна утиліта виявлення прихованих процесів (реферат, курсова, диплом, контрольна)

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ Тернопільський національний технічний університет імені Івана Пулюя Кафедра комп’ютерних систем та мереж КУРСОВА РОБОТА З ДИСЦИПЛІНИ «СИСТЕМНЕ ПРОГРАМУВАННЯ»

«СИСТЕМНА УТИЛІТА ВИЯВЛЕННЯ ПРИХОВАНИХ ПРОЦЕСІВ»

Виконав Студент групи СІ-32

Н. С. Подзігун Керівник роботи Н. Р. Дем’янчук Тернопіль — 2011

ЗМІСТ

  • ВСТУП
  • 1. РОЗРОБКА СТРУКТУРИ ПРОГРАМИ
    • 1.1 Аналіз технічного завдання
    • 1.2 Структурна та функціональна схеми
    • 1.3 Опис алгоритмів роботи програми
      • 1.3.1 Загальний алгоритм програми
      • 1.3.2 Алгоритм пошуку процесів
      • 1.3.3 Алгоритм виводу інформації про процеси
      • 1.3.4 Алгоритм видалення процесів
  • 2. РЕАЛІЗАЦІЯ ПРОГРАМИ
    • 2.1 Вибір середовища розробки
    • 2.2 Вибір форми діалогу
    • 2.3 Розробка головного меню
    • 2.4 Особливості реалізації алгоритмів
      • 2.4.1 Реалізація алгоритму пошуку процесів
      • 2.4.2 Реалізація алгоритму видалення процесів
    • 2.5 Опис використаних процедур
    • 2.6 Інтеграція програми
      • 2.6.1 Опис класів
      • 2.6.2 Опис інформаційної моделі
  • 3. ТЕСТУВАННЯ ПРОГРАМИ І РЕЗУЛЬТАТИ ЇЇ ВИКОНАННЯ
  • ВИСНОВОК
  • СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ

ВСТУП

Більшість користувачів звикли до думки, що стандартний диспетчер завдань операційних систем сімейства Windows відображає усі процеси, що наявні в системі. Насправді така думка є хибною, адже приховати певний процес від диспетчера не настільки складно, як може здаватись на перший погляд.

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

При необхідності можна знайти безліч програм (як безплатних, так і плантих), але ніколи не можна бути впевненим, що в них буде застосовано всі специфічні методи виявлення процесів. Саме тому зі знанням програмування краще самому написати таку програму.

1. РОЗРОБКА СТРУКТУРИ ПРОГРАМИ

1.1 Аналіз технічного завдання

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

Дана програма буде забезпечувати надання інформації про наявні в оперативній пам’яті процеси зі статусом прихованих, про їх основні параметри, а також надаватиме засоби керування ними (зокрема, можливість зупинки виконання процесу).

Розроблене програмне забезпечення повинно правильно функціонувати в операційних системах сімейства Microsoft Windows, зокрема Windows2000/XP/Vista/Seven.

Розроблена програма повинна підтримувати наступну функціональність:

· відображення типу процесів (приховані, видимі) та їх ідентифікаторів;

· відображення стану процесів;

· надання можливості зупинки виконання процесу;

· забезпечення виявлення прихованих процесів різними методами.

Для запуску даної програми необхідно мати встановлену операційну систему сімейства MS Windows (Windows XP або новіші).

Мінімальна конфігурація технічних засобів:

· Тип процесора: Intel Pentium/AMD Athlon (32bit)

· Тактова частота, МГц: не менше 1000

· Об'єм оперативної пам’яті, МБайт: не менше 1024

· Роздільна здатність відео дисплею, dpi: не менше 1024*768

Детальніше ці та інші вимоги можна переглянути у технічному завданні до курсової роботи.

1.2 Структурна та функціональна схеми

Детальну будову програми відображає її структурна схема, що зображена нижче (рис. 1.1).

Рисунок 1.1 — Структурна схема програми Блок вводу вхідних даних — створений для задання програмі відповідних вхідних параметрів, згідно яких буде відбуватись подальший пошук процесів, а також для скидання вибраних вхідних параметрів пошуку в початкове (нульове) значення. Даний блок передає результат свого виконання в блок вибору/пошуку запущених процесів.

Блок вибору/пошуку запущених процесів — створений для пошуку запущених процесів згідно з критеріями, отриманими з блоку вводу вхідних даних. Даний блок передає результат своєї роботи блоку курування процесами, де і відбувається подальша обробка отриманої інформації.

Блок керування процесами — створений для знищення (припинення) знайдених у системі процесів. Даний блок отримує інформацію з блоку вибору/пошуку запущених процесів. Виклик блоку керування процесами відбувається шляхом натискання відповідної кнопки «Kill» у програмі для знищення існуючого процесу. Даний блок передає результат своєї роботи в блок виводу запущених прихованих процесів, в якому проводяться подальші операції.

Блок виводу запущених прихованих процесів — отримує інформацію з попередніх блоків і реалізує функцію виводу інформацію про наявні в системі процеси та їх основні характеристики (PID, ParentPID, а також специфіка самого процесу). Для виводу інформації на екран даний блок використовує структуру, в полях якої записано відповідні характеристики кожного процесу системи.

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

Рисунок 1.2 — Функціональна схема програми Функція вибору типу пошуку процесів — реалізує задання в програмі одного з можливих типів пошуку, згідно з яким будуть задіяні відповідні методи виявлення процесів.

Функція пошуку процесів — отримує інформацію з результату виконання попередньої функції та реалізовує пошук процесів відповідними методами (згідно із обраною специфікацією).

Функція видалення вибраних процесів — реалізує припинення виконання процесу, який був обраний користувачем, що повинно бути підтверджено натисканням відповідної кнопки «Kill» для видалення процесу.

Функція виводу запущених процесів — отримує результати виконання попередніх функцій і виводить їх у відповідній частині вікна програми. Дана функція виконується автоматично.

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

1.3 Опис алгоритмів роботи програми

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

1.3.1 Загальний алгоритм програми

З метою цілісного розуміння виконання програми проводиться побудова загального алгоритму роботи всієї програми. Загальний алгоритм роботи розроблюваної програми показано далі (рис. 1.3).

Рисунок 1.3 — Алгоритм роботи програми Під час аналізу програми простежується, що її виконання повинно відбуватись в кілька основних етапів:

1. Вибір типу пошуку процесу — на даному етапі програмі задається вхідний набір параметрів, згідно яких і буде проводитись пошук процесів.

2. Пошук прихованих процесів — на даному етапі проводиться пошук прихованих процесів згідно обраних раніше критерії пошуку.

3. Видалення процесу — на цьому етапі користувачу надається можливість видалення (зупинки виконання) обраного ним процесу.

4. Вивід інформації про приховані процеси — на цьому етапі в вікні програми виводиться інформація про запущені процеси, їх основні характеристики (зокрема, PID та ParentPID), а також виводиться інформація про тип процесу (видимий чи прихований).

5. Запис результатів пошуку в текстовий файл.

Також передбачено можливість скидання пошуку в початкове значення, при цьому відбудеться очищення вікна програми з результатами пошуку, після чого стане можливим задання нового вхідного набору параметрів пошуку.

1.3.2 Алгоритм пошуку процесів

Алгоритм пошуку процесів зображено нижче (рис. 1.4).

Рисунок 1.4 — Алгоритм пошуку процесів Пошук процесів розпочинається із оголошення в процедурі пошуку змінних та присвоєння їм відповідних типів.

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

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

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

1.3.3 Алгоритм виводу інформації про процеси

Алгоритм виводу інформації про системні процеси продемонстровано далі (рис. 1.5).

Рисунок 1.5 — Алгоритм виводу інформації про процеси Виконання алгоритму виводу інформації про процеси розпочинається з організації циклу, який є дійсним для всіх запущених процесів системи. В ходу виконання даного циклу проводиться перевірка, чи існує структура характеристик для кожного процесу.

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

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

1.3.4 Алгоритм видалення процесів

Алгоритм видалення процесів зображено далі (рис. 1.6).

Рисунок 1.6 — Алгоритм видалення процесів Після того, як було отримано множину структур та виведено інформацію про знайдені процеси у вікно програми, можна приступити до проведення операцій над цими процесами, зокрема зупинити виконання деяких з них (видалення процесів). Кожен із об'єктів, якими в даному випадку виступають запущені процеси, виведені у вікні програми, може бути видалений.

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

2. РЕАЛІЗАЦІЯ ПРОГРАМИ

2.1 Вибір середовища розробки

Для реалізації поставлених задач було використано середовище програмування Delphi, а саме мову програмування Object Pascal. Коротко розглянемо цю мову програмування.

Object Pascal — це результат розвитку мови програмування Turbo Pascal, яка, у свою чергу, розвинулася з мови Pascal. Pascal був повністю процедурною мовою програмування, Turbo Pascal, починаючи з версії 5.5, додав в Pascal об'єктно-орієнтовані властивості, а Object Pascal — динамічну ідентифікацію типу даних з можливістю доступу до метаданих класів (тобто до опису класів та їх членів) в коді, який компілюється.

Delphi мав серйозний вплив на створення концепції мови програмування C# для платформи .NET. Велика кількість його елементів і концептуальні рішення увійшли до складу С#. Однією з причин цього називають перехід Андерса Хейлсберга, одного з провідних розробників Delphi, із компанії Borland Ltd. В Microsoft Corp.

Першою версією повноцінного середовища розробки Delphi для .NET є Delphi 8. Воно дозволяло писати програми лише для .NET. Наступні версії (позначаються роками виходу, а не порядковими номерами, як це було раніше) можуть створювати як додатки Win32, так і байт-код для платформи .NET.

2.2 Вибір форми діалогу

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

1. Директивна — її характерною ознакою є те, що при виклику операції виконується команда (директива), ініціатором якої є користувач.

2. Таблична — включає в себе:

а) вибір з меню операції на виконання;

б) заповнення та редагування шаблонів даних.

Основними перевагами табличної форми діалогу є його простота та легкість в освоєнні.

3. Фразова — її характерною ознакою є використання обмеженої природної мови, при чому ініціатором кожного кроку діалогу може бути як користувач, так і сама програма.

Враховуючи, що інтерфейс розробленої програми повинен бути доволі простим, доступним та інтуїтивно зрозумілим, зупинимося на табличній формі діалогу. Окрім цього, оберемо тип діалогу із застосуванням маніпулятора типу «миша», як і в більшості розроблюваних програм під операційні системи сімейства Windows.

2.3 Розробка головного меню

В нижній частині головного вікна програми буде знаходитись головне меню, структура якого зображена далі (рис. 2.1). Поряд з головним меню програми буде розміщено панель інструментів, які дають можливість увімкнути чи вимкнути один із реалізованих в програмі методів пошуку процесів. При вибору одного із пунктів головного меню автоматично вмикаються відповідні йому параметри. Вище в головному вікні розміщуватиметься рядок стану, в якому відображається інформація про запущені та зупинені (видалені) процеси, а також про їх основні характеристики. Основну частину вікна програми займатиме клієнтська область, в якій буде відображатися список усіх запущених процесів системи та інформація про них.

Рисунок 2.1 — Структура головного меню програми

2.4 Особливості реалізації алгоритмів

2.4.1 Реалізація алгоритму пошуку процесів

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

var

Process: TPROCESSENTRY32;

NewItem: PProcessRecord;

Змінна Process відповідає типу процесу Win32, а змінна NewItem відповідно являє собою структуру запису, в поля якої буде внесено інформацію про знайдені приховані процеси.

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

Після цього проводиться перевірка, чи є кожен із запущених процесів процесом Win32. При позитивному результаті перевірки відбувається створення нової структури NewItem та запис основних характеристик процесу (PID та ParentPID) в поля ProcessId та ParrentPID новоствореної структури.

NewItem^.ProcessId := Process. th32ProcessID;

NewItem^.ParrentPID := Process. th32ParentProcessID;

При негативному результаті перевірки (не знайдено процесу Win32) продовжується цикл перевірки запущених процесів.

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

2.4.2 Реалізація алгоритму видалення процесів

Організація видалення процесу з точки зору програмування виглядає наступним чином:

object Kill1: TMenuItem

Caption = 'Kill'

OnClick = Kill1Click

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

Дана реалізація видалення процесу з точки зору роботи програми виглядає наступним чином: при кліку клавішею мишки по обраному процесу, з’являється вікно із написом 'Kill'. При кліку по даному вікні починає своє виконання подія OnClick, яка в даному випадку завершить роботу вибраного користувачем процесу.

2.5 Опис використаних процедур

програмування утиліта операційний інтерфейс

Для здійснення пошуку процесів використовуються наступні методи — обробники подій:

· Procedure GetToolHelpProcessList (var List: PlistStruct) — процедура, яка викликається при отриманні списку процесів через ToolHelp API. Лістинг даної процедури представлено нижче (лістинг 1):

Лістинг 1 — Процедура отримання списку процесів через ToolHelp API

procedure GetToolHelpProcessList (var List: PlistStruct);

var

Snap: dword;

Process: TPROCESSENTRY32;

NewItem: PprocessRecord;

begin

Snap := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);

if Snap <> INVALID_HANDLE_VALUE then

begin

Process.dwSize := SizeOf (TPROCESSENTRY32);

if Process32First (Snap, Process) then

repeat

GetMem (NewItem, SizeOf (TprocessRecord));

ZeroMemory (NewItem, SizeOf (TprocessRecord));

NewItem^.ProcessId := Process. th32ProcessID;

NewItem^.ParrentPID:= Process. th32ParentProcessID;

lstrcpy (@NewItem^.ProcessName, Process. szExeFile);

AddItem (List, NewItem);

until not Process32Next (Snap, Process);

CloseHandle (Snap);

end;

end;

· Procedure GetNativeProcessList (var List: PlistStruct) — процедура, яка викликається при отриманні списку процесів через ZwQuerySystemInformation. Лістинг даної процедури представлено нижче (лістинг 2):

Лістинг 2 — Процедура отримання списку процесів за допомогою ZwQuerySystemInformation

procedure GetNativeProcessList (var List: PlistStruct);

var

Info: PSYSTEM_PROCESSES;

NewItem: PprocessRecord;

Mem: pointer;

begin

Info:= GetInfoTable (SystemProcessesAndThreadsInformation);

Mem := Info;

if Info = nil then Exit;

repeat

GetMem (NewItem, SizeOf (TprocessRecord));

ZeroMemory (NewItem, SizeOf (TprocessRecord));

lstrcpy (@NewItem^.ProcessName,

Pchar (WideCharToString (Info^.ProcessName.Buffer)));

NewItem^.ProcessId := Info^.ProcessId;

NewItem^.ParrentPID := Info^.InheritedFromProcessId;

AddItem (List, NewItem);

Info := pointer (dword (info) + info^.NextEntryDelta);

until Info^.NextEntryDelta = 0;

VirtualFree (Mem, 0, MEM_RELEASE);

end;

· Procedure GetHandlesProcessList (var List: PlistStruct) — процедура, яка викликається при отриманні списку процесів за списком відкритих хендлів. Повертає тільки ProcessID. Лістинг даної процедури представлено нижче (лістинг 3):

Лістинг 3 — Процедура отримання списку процесів за списком відкритих хендлів

procedure GetHandlesProcessList (var List: PlistStruct);

var

Info: PSYSTEM_HANDLE_INFORMATION_EX;

NewItem: PprocessRecord;

r: dword;

OldPid: dword;

begin

OldPid := 0;

Info := GetInfoTable (SystemHandleInformation);

if Info = nil then Exit;

for r := 0 to Info^.NumberOfHandles do

if Info^.Information[r]. ProcessId <> OldPid then

begin

OldPid := Info^.Information[r]. ProcessId;

GetMem (NewItem, SizeOf (TprocessRecord));

ZeroMemory (NewItem, SizeOf (TprocessRecord));

NewItem^.ProcessId := OldPid;

AddItem (List, NewItem);

end;

VirtualFree (Info, 0, MEM_RELEASE);

end;

· procedure GetWindowsProcessList (var List: PlistStruct) — процедура, яка викликається при отриманні списку процесів за списком робочих вікон. Повертає тільки ProcessID.

· procedure GetSyscallProcessList (var List: PlistStruct) — процедура, яка викликається при отриманні списку процесів через системний виклик ZwQuerySystemInformation. Лістинг даної процедури представлено нижче (лістинг 4):

Лістинг 4 — Процедура отримання списку процесів через системний виклик ZwQuerySystemInformation

procedure GetSyscallProcessList (var List: PlistStruct);

var

Info: PSYSTEM_PROCESSES;

NewItem: PprocessRecord;

mPtr: pointer;

mSize: dword;

St: NTStatus;

begin

mSize := $ 4000;

repeat

GetMem (mPtr, mSize);

St := ZwQuerySystemInfoCall (SystemProcessesAndThreadsInformation,

mPtr, mSize, nil);

if St = STATUS_INFO_LENGTH_MISMATCH then

begin

FreeMem (mPtr);

mSize := mSize * 2;

end;

until St <> STATUS_INFO_LENGTH_MISMATCH;

if St = STATUS_SUCCESS then

begin

Info := mPtr;

repeat

GetMem (NewItem, SizeOf (TprocessRecord));

ZeroMemory (NewItem, SizeOf (TprocessRecord));

lstrcpy (@NewItem^.ProcessName,

Pchar (WideCharToString (Info^.ProcessName.Buffer)));

NewItem^.ProcessId := Info^.ProcessId;

NewItem^.ParrentPID := Info^.InheritedFromProcessId;

Info := pointer (dword (info) + info^.NextEntryDelta);

AddItem (List, NewItem);

until Info^.NextEntryDelta = 0;

end;

FreeMem (mPtr);

end;

· procedure GetProcessesFromHandles (var List: PlistStruct; Processes, Jobs, Threads; ендлів) — процедура, яка викликається при отриманні списку процесів через перевірку ендлів в інших процесах.

· function XpZwQuerySystemInfoCall (AsystemInformationClass: dword; AsystemInformation: Pointer; AsystemInformationLength: dword; AreturnLength: pdword): dword; stdcall — функція, яка являє собою системний виклик ZwQuerySystemInformation для операційних систем Windows XP. Лістинг даної функції представлено нижче (лістинг 5):

Лістинг 5 — Системний виклик ZwQuerySystemInformation для операційних систем Windows XP

Function XpZwQuerySystemInfoCall (AsystemInformationClass: dword; AsystemInformation: Pointer; AsystemInformationLength: dword; AreturnLength: pdword): dword; stdcall;

asm

pop ebp

mov eax, $AD

call @SystemCall

ret $ 10

@SystemCall:

mov edx, esp

sysenter

end;

· function Win2kZwQuerySystemInfoCall (AsystemInformationClass: dword; AsystemInformation: Pointer; AsystemInformationLength: dword; AreturnLength: pdword): dword; stdcall — функція, яка являє собою системний виклик ZwQuerySystemInformation для операційних систем Windows 2000. Лістинг даної функції представлено нижче (лістинг 6):

Лістинг 6 — Системний виклик ZwQuerySystemInformation для операційних систем Windows 2000:

Function Win2kZwQuerySystemInfoCall (AsystemInformationClass: dword; AsystemInformation: Pointer; AsystemInformationLength: dword; AreturnLength: pdword): dword; stdcall;

asm

pop ebp

mov eax, $ 97

lea edx, [esp + $ 04]

int $ 2E

ret $ 10

end;

· function FindProcess (List: PListStruct; Pid, pEPROCESS: dword): PProcessRecord — функція, за допомогою якої відбувається виявлення процесів і створення структури запису, що містить знайдені процеси. Лістинг даної функції представлено нижче (лістинг 7):

Лістинг 7 — Процедура виявлення процесів

function FindProcess (List: PListStruct; Pid, pEPROCESS: dword): PProcessRecord;

var

Process: PProcessRecord;

begin

Result := nil;

while (List <> nil) do

begin

Process := List^.pData;

if (((pEPROCESS <> 0) and (Process^.pEPROCESS = pEPROCESS)) or

((Pid <> 0) and (Process^.ProcessId = Pid)) or

((Pid = 0) and (pEPROCESS = 0) and (Process^.pEPROCESS = 0)

and (Process^.ProcessId = 0))) then

begin

Result := Process;

Exit;

end;

List := List^.pNext;

end;

end.

2.6 Інтеграція програми

Для функціонування програми, всі її компоненти — функції, процедури та діалогові вікна, потрібно інтегрувати в єдиний програмний продукт.

В середовищі Borland Delphi 7.0 це забезпечується розміщенням функцій та процедур у відповідному порядку. Оголошення всіх загальних змінних, типів даних, процедур та функцій, що використовуються, проводиться на самому початку файлу, що містить головний код програми. Також там оголошується підключення всіх модулів та файлів, які використовуються або викликаються головною програмою.

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

2.6.1 Опис класів

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

Рисунок 2.2 — Діаграма класів програми

Єдиним класом програми є клас Tform1. Лістинг даного класу представлено у додатках (додаток Б):

Даний клас являє собою головне діалогове вікно програми, що і є його основним призначенням. Основними атрибутами класу Tform1 програмного продукту є:

· Form1 — головне меню програми;

· ListBox1 — панель відображення;

· ListView1 — діалогове вікно для виведення інформації про відповідні знайдені процеси та їх атрибути: Назва процесу, PID, ParrentPID, EPROCESS, Статус процесу;

· Panel1 — інструментальна панель з відповідними кнопками та атрибутами вибору параметрів, за допомогою яких задаються методи пошуку процесів;

· Timer1 — таймер, що використовується для організації відліку часу при пошуку процесів;

· PopupMenu1 — діалогове меню, з допомогою якого можливо вибраний із списку відповідний процес, при виклику даного меню відображається кнопка «Kill», застосування якої і дає змогу видалити вибраний процес.

2.6.2 Опис інформаційної моделі

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

Дана структура представлена у вигляді схеми і зображена нижче (рис. 2.3).

Рисунок 2.3 — Інформаційна модель системи

3. ТЕСТУВАННЯ ПРОГРАМИ І РЕЗУЛЬТАТИ ЇЇ ВИКОНАННЯ

Враховуючи те, що була вибрана таблична форма діалогу, основою інтерфейсу програми буде головне меню, з пунктів якого і будуть вибиратися певні команди. Вигляд головного вікна програми зображено нижче (рис. 3.1).

Рисунок 3.1 — Головне вікно програми Розглянемо категорії головного меню програми, які можна обирати для задання відповідних вхідних параметрів пошуку процесів:

Категорія None — при виборі цієї категорії відбувається скидання усіх раніше обраних параметрів та методів пошуку в початкове значення.

Категорія Usermode (пошук в режимі користувача) — при виборі цієї категорії автоматично буде відібрано відповідні їй методи пошуку процесів (рис. 3.2).

Рисунок 3.2 — Методи пошуку процесів категорії Usermode

Категорія Base driver (пошук за базою драйверів) — при виборі цієї категорії автоматично буде відібрано відповідні їй методи пошуку процесів (рис. 3.3), зокрема ті, в яких використовується база відповідних драйверів.

Рисунок 3.3 — Методи пошуку процесів категорії Base driver

Категорія Extended (розширений пошук) — при виборі цієї категорії автоматично буде відібрано усі реалізовані в програмі методи виявлення процесів (рис. 3.4).

Рисунок 3.4 — Методи пошуку процесів категорії Extended

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

Рисунок 3.5 — Головне вікно в ході тестування роботи програми

ВИСНОВОК Метою даної курсової роботи було розробка системної утиліти виявлення прихованих процесів для багатозадачних операційних систем сімейства Microsoft Windows. Під час виконання роботи було сформовано технічне завдання, в якому були визначені основні напрямки і спеціальні вимоги, необхідні для розробки системи.

Наступним етапом був вибір об'єктно-орієнтованої технологій програмування. Для реалізації поставлених задач було обрано мову програмування Delphi та середовище розробки Borland Delphi 7.0.

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

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

На останньому етапі було проведено тестування правильності функціонування розробленого програмного продукту.

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

СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ

1. Справочник «Основы Delphi» [Електронний ресурс]. — Режим доступу: URL: http://delphibasics.ru/.

2. Клуб Программистов. Delphi [Електронний ресурс]. — Режим доступу: URL: http://www.programmersclub.ru/category/delphi/.

3. Delphi 7. Учебный курс. — Санкт-Петербург: Питер, 2004. — 736 с.

4. Анатолий Хомоненко, Владимир Гофман, Евгений Мещеряков, Владимир Никифоров. Delphi 7. Наиболее полное руководство. — Санкт-Петербург: Питер, 2008. — 1216 с.

Показати весь текст
Заповнити форму поточною роботою