Програмна реалізація контролю процесів у середовищі Windows

Іванов Ю.О.
Донецький національный технічний університет


Источник: КОМП’ЮТЕРНИЙ МОНІТОРИНГ ТА ІНФОРМАЦІЙНІ ТЕХНОЛОГІЇ — 2006 / Матеріали II науково-технічної конференції молодих учених та студентів. — Донецьк, ДонНТУ — 2006.


Серед сучасних програмних комплексів захисту інформації розповсюджені багато потокові організації програм. Це ефективно з точки зору продуктивності виконання програми, а також алгоритмів контролю лігітимності програми (є можливість паралельно слідкувати за механізмом захисту програми). У середовищі Windows процес, який створюється як об’єкт ядра, має мінімум один потік. Він і є тим об’єктом ядра, який виконує код програми і йому система надає процесорний час для виконання команд. Тобто актуальною є задача визначення всіх запущених процесів, тому що знаючи це можна дізнатися про всі існуючі потоки та до якого процесу вони належать. Windows надає різні засоби визначення процесів, але не існує єдиного методу, який коректно працює на всіх платформах. У роботі аналізуються наступні методи:

Microsoft надала набір функцій ToolHelp API ще в Windows 3.1, щоб дозволити стороннім розробникам отримати доступ до системної інформації. При створенні Windows9х, ці функції перейшли до нової системи під назвою ToolHelp32 API. У Windows NT надано ToolHelp32 API. Використання ToolHelp32 API включає створення моментального знімку (snapshot) списку процесів за допомогою функції CreateToolhelp32Snapshot. Наступним кроком виконується прохід по списку з використанням функції Process32First та Process32Next. Структура PROCESSENTRY32 заповнюється цими функціями та містить у собі необхідну інформацію. Не зважаючи на існування документованого способу отримання списку процесів в Windows NT, її Task Manager не використовує цей інтерфейс. Замість нього він спирається на не документовану функцію ZwQuerySystemInformation, яка експортується з NTDLL.DLL і надає можливість отримати доступ до системної інформації і до списку процесів у тому числі. Бібліотека Process Status Helper (PSAPI), надає набір функцій, які дають можливість отримати інформацію про процеси та драйвера пристроїв. Бібліотека надається у складі Windows 2000/XP та доступна лиши у виді додаткової компоненти для Windows NT 4.0. Для переліку процесів бібліотека має функцію EnumProcesses. Windows NT з моменту створення містила інтерфейс для отримання інформації про систему у вигляді лічильників продуктивності. Для отримання інформації необхідно прочитати з ключа реєстру HKEY_PERFORMANCE_DATA значення, зі спеціально сформованим іменем. В результаті повертається набір вкладенних структур, змінного розміру, і аналіз цих даних займає час. З появою в Windows NT 4.0 бібліотеки Performance Data Helper (PDH), яка надає більш простий доступ до даних продуктивності. Ця бібліотека поширювалась у складі Microsoft Platform SDK. Система підрахунку продуктивності в Windows NT визначає поняття объекту (процесор, жорсткий диск), для якого виконується підрахунок продуктивності. Кожний об’ект може мати один чи більше екземплярів, і для кожного об’єкта існує свій набір лічильників продуктивності. Windows Management Instrumentation (WMI) є реалізацією для технології Web-Based Enterprise Management (WBEM). WBEM базується на схемі загальної інформаційної моделі (Common Information Model), яка є індустріальним стандартом і який керується Distributed Management Task Force (DMTF). WMI поставляеться у складі Windows 2000, але може бути встановлений на Windows 95/98/Me та Windows NT 4.0. У роботі пропонується програма в якій реалізовані всі перелічені методи. За допомогою головного меню програми можна вибрати спосіб переліку процесів “Options > Enumerate Process With”. Також у головному вікні програми для кожного процесу виводяться PID та HWND. За допомогою цих даних можна виконувати абсолютно всі дії над процесом (якщо це дозволяє політика безпеки для даного користувача системи). Наприклад, можна встановити інший пріоритет процесу або завершити виконання процесу. Отриманий виконавчий файл має розмір 176 697 байт. Список процесів отриманий за допомогою стандартною утіліти Windows Task Manager (Windows XP) повністю ідентичний результатам роботи програми (був вибраний метод переліку процесів ZwQuerySystemInformation). Результати роботи інших методів порівнювались таким же способом і показали повністю вірний результат.

Литература

  1. Russian Software Developer Network [Електронний ресурс] http://rsdn.ru/