![](/user_photo/2706_HbeT2.jpg)
- •Введение
- •1. Лабораторная работа № 1
- •1.1. Цель работы
- •1.2. Теоретическое введение
- •1.2.1. Получение информации об операционной системе
- •1.2.2. Получение информации из реестра
- •1.2.3. Получение информации о системных каталогах Windows
- •1.2.4. Получение информации о диске
- •1.3. Создание приложения для получения характеристик компьютера и операционной системы
- •Контрольные вопросы
- •2. Лабораторная работа №2
- •2.1.Цель работы
- •2.2. Теоретическое введение
- •2.2.1. Процедуры и функции для работы с виртуальной памятью
- •2.3. Создание приложения, работающего с виртуальной памятью
- •2.4. Задание для самостоятельной работы
- •Контрольные вопросы
- •3. Лабораторная работа № 3
- •3.1. Цель работы
- •3.2. Пример использования механизма выделения виртуальной памяти для решения конкретных задач
- •3.3. Задания для самостоятельной работы
- •Контрольные вопросы
- •4. Лабораторная работа № 4
- •4.1. Цель работы
- •4. 2. Теоретическое введение
- •4.2.1 Создание или открытие объекта ядра «файла»
- •4.2.2 Создание объекта ядра «файл, проецируемый в память»
- •4.2.3 Проецирование файловых данных на адресное пространство процесса
- •4.2.4 Отмена проецирования на адресное пространство процесса объекта ядра «файл, проецируемый в память»
- •4.2.5 Закрытие объектов ядра «файл, проецируемый в память» и «файл»
- •4.3 Примеры программ, выполняющих проецирование в память
- •4.3.1 Пример 1
- •4.3.2 Пример 2
- •4.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •5. Лабораторная работа № 5
- •5.1.Цель работы
- •5.2. Теоретическое введение
- •5.2.1. Создание процесса
- •5.2.2. Запуск внешней программы функцией WinExec
- •5.2.3. Запуск внешней программы и открытие документа функцией ShellExecute
- •При успешном выполнении функция ShellExecute возвращает целое значение, большее 32. Значение меньшее или равное 32 указывает на ошибку. Значения эти те же, что и для функции WinExec.
- •5.2.4. Создание потока
- •5.2.5. Завершение процесса
- •5.2.6. Завершение потока
- •5.2.7. Изменение класса приоритета процесса
- •5.2.8. Получение информации о классе приоритета процесса
- •5.2.9. Изменение уровня приоритета потока
- •5.2.10. Получение информации о приоритете потока
- •5.3. Примеры программ для работы с процессами и потоками
- •5.3.1. Создание процесса с помощью функции CreateProcess.
- •5.3.2. Создание процесса с помощью функции WinExec.
- •5.3.3. Создание процесса с помощью функции ShellExecute.
- •5.3.4. Создание многопоточного приложения.
- •5.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •6. Лабораторная работа № 6
- •6.1. Цель работы
- •6.2. Теоретическое введение
- •6.2.1. Получение «мгновенного снимка» системы
- •6.2.2. Получение информации о процессах
- •6.2.3. Получение информации о потоках
- •6.2.4. Получение информации о модулях
- •6.2.5. Информация о кучах (heap)
- •6.2.6. Информация о виртуальной памяти.
- •6.2.7. Алгоритм работы функций ToolHelp
- •6.2.8. Как получить карту памяти любого процесса
- •6.3. Пример использования функций ToolHelp
- •6.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •7. Лабораторная работа № 7
- •7.1. Цель работы
- •7.2. Теоретическое введение
- •7.2.1. Критические секции
- •7.2.2. Синхронизация с использованием объектов ядра
- •7.2.3. Wait-функции
- •7.2.4. Синхронизация с использованием процессов и потоков
- •7.2.5. Объекты Mutex
- •7.2.6. Семафоры
- •7.2.7. События
- •7.3 Примеры работы с объектами синхронизации
- •7.3.1 Пример 1
- •7.3.1 Пример 2
- •7.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •8. Лабораторная работа № 8
- •8.1. Цель работы
- •8.2 Теоретическое введение
- •8.2.1 Создание dll
- •8.2.2 Неявная загрузка dll
- •8.2.3 Явная загрузка dll
- •8.2.4 Внедрение dll в адресное пространство другого процесса
- •8.3 Пример работы с dll
- •8.3.1 Создание dll, которая выполняет перехват нажатых клавиш
- •8.3.2 Разработка приложения, которое выполняет анализ и обработку нажатых клавиш.
- •8.4 Индивидуальные задания
- •Контрольные вопросы
- •9.2.2. Функции для работы с объектом «уведомление об изменении файловой системы»
- •9.3. Пример работы системы уведомления об изменениях в файловой системе
- •9.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •Литература
- •214013 Г. Смоленск, Энергетический проезд, 1
8.4 Индивидуальные задания
Вариант 1
Создайте DLL, содержащую функцию для вычисления n!. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные идентификаторы (идентификатор – слово, состоящее из букв и цифр, причем первый символ обязательно буква).
Вариант 2
С
оздайте DLL, содержащую функцию для вычисления .
Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные IP-адреса.
Вариант 3
Создайте DLL, содержащую функцию для вычисления an. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все встреченные имена. Именем, для простоты реализации, будем считать любое слово, начинающееся с заглавной буквы.
Вариант 4
Создайте DLL, содержащую функцию для вычисления a(a+1)…(a+n-1). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные PIN-коды. Будем считать, что PIN-код – слово, состоящее только из одних цифр.
Вариант 5
Создайте DLL, содержащую функцию для вычисления a(a-n)(a-2n)…(a-n2). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите информацию о перехваченных клавишах в файл.
Вариант 6
Создайте DLL, содержащую функцию для вычисления
. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные телефонные номера.
Вариант 7
Создайте DLL, содержащую функцию для вычисления Sin (x)+ Sin2 (x)+….+ Sinn (x). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные доменные имена.
Вариант 8
Создайте DLL, содержащую функцию для вычисления Sin (x)+ Sin (x2)+….+ Sin (xn). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все номера сотовых телефонов. Номером сотового телефона будем считать любое слово, начинающееся со знака «+» и состоящее из цифр и знакос «-»
Вариант 9
Создайте DLL, содержащую функцию для вычисления y=4x3-2x2+5. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные адреса. Адресом будем считать предложение, содержащее с шестизначный индекс
Вариант 10
Создайте DLL, содержащую функцию для вычисления . Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные денежные суммы в долларах.
Вариант 11
Создайте DLL, содержащую функцию для вычисления функции
.
Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию об общем количестве нажатых клавиш, количестве гласных и согласных букв.
Вариант 12
Создайте DLL, содержащую функцию для вычисления наибольшего общего делителя (НОД) двух чисел. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию об общем количестве нажатых клавиш, количестве букв и цифр.
Вариант 13
Создайте DLL, содержащую функцию для определения, является ли год високосным. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL. Входным параметром является число – год. Функция возвращает строку с ответом. Год является високосным, если его номер кратен 4, однако из кратных 100 високосными являются лишь кратные 400. например, 1700, 1800 и 1900 годы – не високосные, а 2000 – високосный.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию об общем количестве нажатых клавиш, количестве букв, цифр и служебных символов.
Вариант 14
Создайте DLL, содержащую функцию для вычисления года рождения по старому японскому календарю. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL. В старояпонском календаре был принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла года носили названия животных: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна курица, собака и свинья. Например, 1984 год – год начала очередного цикла – назывался годом зеленой крысы.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию о количестве введенных предложений..
Вариант 15
Создайте DLL, содержащую функции для шифрования и дешифрования строки шифром Атбаш (первая буква алфавита заменяется на последнюю, вторая буква алфавита на предпоследнюю и т.д.). Входными данными является исходная строка. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию об общем количестве нажатых клавиш и количестве введенных предложений.
Вариант 16
Создайте DLL, содержащую функции для шифрования и дешифрования строки шифром Цезаря. Входными данными являются исходная строка и ключ. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL. При шифровании методом Цезаря каждый символ в открытом тексте заменяется буквой находящейся на некоторое постоянное число позиций левее или правее него в алфавите. Например, в шифре со сдвигом 3, А была бы заменена на Г, Б станет Д, и так далее.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все вводимые URL (слова,начинающиеся с префикса http://,ftp://,smtp:// и т.д.)
Вариант 17
Создайте DLL, содержащую функции для перевода числа x из десятичной системы в восьмеричную и, наоборот, из восьмерично в десятичную. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все вызываемые скрипты (слова, содержащие символы «.exe», «.dll», «.cgi», «.php», «.asp» и .т.д.).
Вариант 18
Создайте DLL, содержащую функции для перевода числа x из десятичной системы в шестнадцатеричную и, наоборот, из шестнадцатеричной в десятичную. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все предложения, содержащие идентификаторы (идентификатор – слово, состоящее из букв и цифр, причем первый символ обязательно буква).
Вариант 19
Создайте DLL, содержащую функции для перевода числа x из десятичной системы в двоичную и, наоборот, из двоичной в десятичную. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все предложения, содержащие номера телефонов.
Вариант 20
Создайте DLL, содержащую функцию для вычисления
. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.
Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию об общем количестве нажатых клавиш, количестве букв, цифр, служебных символов и предложений.