
- •6.050101 «Комп’ютерні науки»
- •Загальні вимоги до виконання лабораторних робіт
- •Лабораторна робота №1
- •1. Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Створення процесу
- •1.3 Створення потоку
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Функція CreateProcess створює новий процес.
- •Додаток 4
- •Додаток 5
- •Addr ThreadId – Створює новий потік.
- •Додаток 6
- •Додаток 7
- •Лабораторна робота №2
- •1. Основні теоретичні відомості
- •1.1 Механізми міжпроцесової взаємодії
- •1.2 Механізми синхронізації процесів та потоків
- •1.3 Об’єкти синхронізації
- •1.4 Очікуючі функції
- •1.5 Створення атома
- •1.6 Створення каналу
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Додаток 4
- •Додаток 5 Детальний опис функції створення анонімного каналу
- •Додаток 6 Детальний опис функції створення іменованого каналу
- •Додаток 7
- •Додаток 8
- •Додаток 9 Текст програми створення анонімного каналу
- •Додаток 10
- •Лабораторна робота №3
- •1. Основні теоретичні відомості
- •2. Приклад програми створення dll
- •Опис програми My_dll.Asm та файлу лістінга My_dll.Def
- •4. Трансляція та компонування dll Для того, щоб відтранслювати(ml.Exe) та зкомпонувати (link.Exe) даний .Asm код, потрібно використовувати наступні параметри:
- •5. Приклад використання функції з бібліотеки
- •Приклад програми завантаження dll
- •7. Створення файлу лістінгу існуючої бібліотеки
- •8. Приклад передачі даних у функцію бібліотеки Створення динамічно завантажуваної бібліотеки
- •Передача параметру у функцію бібліотеки
- •9. Хід роботи
- •11. Завдання
- •12. Контрольні запитання
- •13. Список використаної літератури
- •Лабораторна робота №4
- •1. Основні теоретичні відомості
- •Параметри функції CreateToolhelp32Snapshot:
- •2. Перегляд процесів
- •3. Перегляд потоків
- •Значення результуючого параметру (регістр еах) таке саме як в Process32First і Process32Next.
- •4. Перегляд хіпів асоційованих з процесом
- •5. Перегляд модулів, які використовує процес
- •6. Керування процесами
- •7. Хід роботи
- •9. Завдання На 75 балів виконати 4 завдання:
- •10. Контрольні запитання
- •11. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №5
- •Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Категорії даних
- •1.3 Відкриття і закриття ключів реєстру
- •1.4 Створення підключа у відкритому ключі реєстру
- •1.5 Отримання інформації з ключа реєстру
- •1.6 Перелічення списку значень для заданого ключа реєстру
- •1.7 Виявлення змін в гілці реєстру
- •1.8 Робота з налаштуваннями операційної системи через реєстр
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №6
- •1. Основні теоретичні відомості
- •Породження процесів
- •1.2 Породження потоків
- •2. Хід роботи
- •4. Індивідуальні завдання
- •5. Контрольні запитання
- •Для нотаток Для нотаток Для нотаток
1.4 Створення підключа у відкритому ключі реєстру
Для створення підключа викликається функція RegCreateKeyEx.
Приклад виклику функції RegCreateKeyEx – Програма Б
.386
.model flat, stdcall
include c:\masm32\include\windows.inc
include c:\masm32\include\kernel32.inc
include c:\masm32\include\advapi32.inc ; Необхідна для роботи з реєстром
include c:\masm32\include\user32.inc
include c:\masm32\include\masm32.inc
includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\masm32.lib
includelib c:\masm32\lib\advapi32.lib ; Необхідна для роботи з реєстром
.data
subkey db "Software\NewCompany”,0 ; Назва для ключа,який створиться
hkey dd ? ; Дескриптор новоствореного ключа
.code
start:
invoke RegCreateKeyEx, \ ; Функція створення нового ключа в реєстрі
Б17.1. HKEY_CURRENT_USER, \ ; Точка в реєстрі в якій створюватиметься ключ
Б17.2. addr subkey, \ ; Назва ключа, який створюється (Б13)
Б17.3. 0, \ ; Завжди рівне 0
Б17.4. 0, \ ; Клас створеного ключа, 0 – по замовчуванню
Б17.5. REG_OPTION_NON_VOLATILE, \ ; Опція визначає, що ключ постійно
; зберігається в реєстрі
Б17.6. KEY_WRITE, \ ; Режим доступу до нового ключа
Б17.7. 0, \ ; Дескриптор не переходить по спадковості
Б17.8. addr hkey, \ ; Посилання на змінну, яка отрим. дескриптор ; створеного ключа (Б14)
Б17.9. 0 ; Не отримувати дані про результат створення
invoke ExitProcess,0
end start
В програмі Б створюється новий підключ в гілці реєстру “HKEY_CURRENT_USER\Software” з назвою NewCompany. Опишемо детальніше аргументи функції RegCreateKeyEx (Б17.1-Б17.9):
Б17.1 визначає точку в реєстрі в якій створюється новий ключ, за можливими варіантами точок, див. вище опис А17.1.
Б17.2 вказує на стрічку Б13, яка містить назву нового ключа.
Б17.3 зарезервовано OC Windows, мусить бути нульовим.
Б17.4 може вказувати на стрічку, яка визначає клас (тип об’єкта) нового ключа або просто 0 для звичайного класу.
Б17.5 визначає властивості збереження ключа (постійний, тимчасовий і т.п.). Цей параметр може приймати одне з наступних значень:
Значення |
Опис |
REG_OPTION_NON_VOLATILE |
Створюваний ключ є постійним; цей параметр є по замовчуванню. Інформація асоційована з ключем зберігається в файлі і залишається після перезавантаження комп’ютера. Функція RegSaveKey зберігає постійні ключі. |
REG_OPTION_VOLATILE |
Для Windows NT: створюваний ключ є тимчасовим; інформація, асоційована з ним зберігається в оперативній пам’яті і не залишається після перезавантаження комп’ютера. Функція RegSaveKey не зберігає тимчасові ключі. Цей параметр ігнорується коли ключ вже існує. Windows 9х: це значення ігнорується в Windows 9х. Коли вказати його, то функція RegCreateKeyEx створює постійний ключ і повертає ERROR_SUCCESS. |
REG_OPTION_BACKUP_RESTORE |
Windows NT: коли встановлене це значення, функція ігнорує параметр Б17.6 і робить спробу відкрити ключ в режимі необхідному для резервування або відновлення ключа. Коли потік, який викликає функцію RegCreateKeyEx має включені привілеї SE_BACKUP_NAME, ключ буде відкритий з правами доступу ACCESS_SYSTEM_SECURITY і KEY_READ. Якщо викликаючий потік має включені привілеї SE_RESTORE_NAME, ключ відкривається з правами доступу ACCESS_SYSTEM_SECURITY та KEY_WRITE. Коли обидва привілеї існують, ключ відкривається з всіма переліченими правами доступу. Windows 9х: це значення ігнорується, оскільки Windows 9х не має захисту на доступ до реєстру. |
Б17.6 визначає права доступу до новоствореного ключа; для повного списку можливих значень див. опис аргументу А17.4.
Б17.7 – вказівник на структуру SECURITY_ATTRIBUTES, яка визначає, чи повернутий дескриптор ключа буде передаватися породженим процесам, чи ні. Коли цей параметр рівний нулю (як в програмі Б), дескриптор не буде передаватися.
Б17.8 вказує на змінну Б14, в яку запишеться дескриптор створеного ключа.
Б17.9 – якщо не нуль, то вказує на змінну, яка прийматиме одне з перелічених нижче значень:
Значення |
Опис |
REG_CREATED_NEW_KEY |
Ключ не існував і був створений. |
REG_OPENED_EXISTING_KEY |
Ключ вже існував і був лише відкритий. |
Коли задати функції RegCreateKeyEx створення вже існуючого ключа, то вона його просто відкриє, як RegOpenKeyEx (програма А).