Тимофеев 2018 / ОС 1 лаб
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра вычислительной техники
отчет
по лабораторной работе №1
по дисциплине «Операционные системы»
Тема: «Исследование объектов Windows»
Студент гр. 6307 |
|
Лазарев С. О. |
Преподаватель |
|
Тимофеев А. В. |
Санкт-Петербург
2018
Цель работы: исследовать объектные механизмы Win32.
Основные теоретические положения
Утилита Process Explorer отображает подробную информацию о процессах и потоках, включая их родство, загруженные DLL и открытые дескрипторы объектов.
Консольная утилита Handle отображает информацию о дескрипторах объектов, имеющихся у процессов системы. Для каждого процесса отображается имя, PID и имя учетная записи, от имени которой запущен процесс.
Программа LiveKD позволяет запускать отладчик ядра Microsoft KD, входящий в Windows Driver Kit (WDK). LiveKD позволяет выполнять просмотр моментального снимка работающей локальной системы, не перезагружая систему в режим отладки.
Экспериментальные результаты
Задание 1.1: Получить список открытых объектов и изучить типы объектов
Выбран процесс ConsoleApplication2.exe c PID = 9980
Объекты программы можно посмотреть с помощью Process Explorer
Рис. 1 - выбранный процесс для исследования и его объекты
А также с помощью утилиты handle.exe
Вывод используемых типов объектов программой ConsoleApplication2.exe с помощью ключа -s
Рис. 2 – сводный список с количеством объектов разного типа, принадлежащих выбранному процессу
Вывод всех объектов программы ConsoleApplication2.exe с помощью ключа –a
Приведён не полный список, он совпадает с выводом программы Process Explorer
Рис. 3.1 – список объектов выбранного процесса
Рис. 3.2 – список объектов выбранного процесса
Таблица1. Описание типов объектов:
ALPC Port |
ALPC – Advanced Local Procedure Call Объект ядра, реализующий механизм межпроцессного взаимодействия |
Desktop |
Объект, содержащийся внутри объекта станции окна (windows station). Рабочий стол имеет логическую поверхность дисплея и содержит окна, меню и связи. |
Directory |
Виртуальный каталог в пространстве имён диспетчера объектов, отвечающий за содержание других объектов или каталогов объектов |
EtwRegistration |
Объект регистрации, связанный с ETW-провайдером пользовательского режима (или режима ядра), который зарегистрирован с помощью API-функции EventRegister. |
Event |
Объект, имеющий постоянное состояние (о котором поступил или не поступил сигнал), который может использоваться для синхронизации или уведомления. |
File |
Экземпляр открытого файла или устройства вводавывода. |
IoCompletion |
Метод для потоков по постановке в очередь и извлечении из неё уведомлений о завершении операций ввода-вывода. |
Key (раздел реестра) |
Механизм ссылки на данные реестра. С объектом раздела (key) связано от нуля до нескольких значений раздела, эти значения содержат данные о разделе. |
Mutant |
Механизм обеспечения взаимного исключения для сред Win32 и OS/2. |
Section (раздел) |
Область разделяемой памяти. |
Semaphore |
Счётчик, ограничивающий доступ к ресурсу путём разрешения доступа к этому ресурсу, защищённому семафором, вполне определённому максимальному количеству потоков. |
Thread |
Исполняемая категория внутри процесса. |
Timer |
Механизм уведомления потока об истечении конкретного периода времени. |
TpWorkerFactory |
Коллекция потоков, назначенных для выполнения конкретного набора задач. Ядро может управлять количеством рабочих элементов, которые будут выполняться по очереди, тем, сколько именно потоков будут отвечать за работу, а также динамическим созданием и завершением рабочих потоков, исходя из конкретных ограничений, устанавливаемых вызывающей программой. Windows показывает рабочий производственный объект через пулы потоков. |
WindowStation |
Объект, содержащий буфер обмена, набор глобальных атомов и группу объектов типа Рабочий стол |
Job (задание) |
Совокупность процессов, управляемая как единая группа. |
Process |
Виртуальное адресное пространство и управляющая информация, необходимая для выполнения набора объектов «поток» |
SymbolicLink |
Механизм косвенной ссылки на имя объекта. |
Token |
Закодированный идентификатор, содержащий информацию о правах доступа зарегистрировавшегося в системе пользователя. |
С помощью утилиты handle.exe можно вывести список всех типов объектов, используемых в системе. Всего в системе используется 68228 объектов.
handle -s
Рис. 4 – сводный список с количеством объектов разного типа для всех процессов вычислительной системы
Описание типов объектов:
job object – позволяет группировать несколько процессов и управлять ими как одним целым.
directory – объект, который содержит другие объекты.
EtwConsumer (ETW - Event Tracing for Windows) – потребляет события из ETW
EtwRegistration – регистрирует события для ETW
FilterCommunicationPort – менеджер порта коммуникации процессов
FilterConnectionPort – менеджер порта соединения процессов
IoCompletion – порт завершения, средство, повышающее производительность приложений, часто использующих операции ввода/вывода.
IoCompletionReserve – резервирует место для I/O completion
KeyedEvent – объекты ключевых событий системы
PcwObject(Performance Counters for Windows) – объект счётчика производительности
PowerRequest – объект запроса питания
Session – контролируют процесс установок.
SymbolLink – ссылка на другие объекты
Timer – объект извещающий процессы с определённым промежутком
TmRm – менеджер транзакций
TmIm – менеджер транзакций
Token – доступные права для объекта
TpWorkerFactory – делает системные вызовы для фабрик и их работников, содержит имя, атрибуты, желаемую маску доступа и дескриптор безопасности, для объектов.
UserApcReserve – резервирует место для APC (Asynchronous Procedure Calls) асинхронных вызовов
WmiGuide(Windows Management Instrumentation globally unique identifier) – уникальный id управления инструментами Windows.
Открытые файлы в системе с расширением .xls(xlsx)
Рис. 5 – Открытые файлы xls в системе
Закрытие дескриптора первого файла
Рис. 6- Закрытие дескриптора 1 файла
Открытые файлы после закрытия одного из дескрипторов
Рис. 7 – Открытые файлы после закрытия 1 дескриптора
Вывод: в операционной системе Windows каждый объект имеет свой дескриптор, однозначно определяющий тип объекта. Действия над объектами совершаются с использованием их дескрипторов.
Задание 1.2: Изучить хранение информации об объектах процесса
Процесс: ConsoleApplication2.exe в момент написания этого задания pid=998010=26FC16. Но после перезагрузки ПК PID может измениться, т.е он не закрепляется навсегда за процессом.
Вывод полной информации о таблице дескрипторов в процессе с идентификатором 0x26FC.
Рис. 8 – Вывод информации о процессе
Рис. 9 – Таблица дескрипторов данного процесса
Вывод подробной информации об объекте 0x0004 процесса 0x26FC.
Рис. 10 – вывод подробной информации об объекте 0004 данного процесса
Всего 53 вхождения, что совпадает с 53 в handle.exe, однако это не означает, что количество объектов всегда фиксировано.
Подробнее о процессе:
Рис. 11 – краткая информация о процессе
Вывод таблицы объектов процесса 0x26FC.
Рис. 12 – таблица объектов процесса
Проанализируем с помощью команды dd <физический адрес> первые 64 16-разрядных слова, размещенные по адресу одноуровневой таблицы объекта процесса:
Рис. 13 – таблица дескрипторов процесса
Физические адреса объектов выбранных дескрипторов
Номер дескриптора |
Физический адрес объекта |
4 |
0xffff8788d7a882d0 |
8 |
0xffff8788d761fb40 |
12 |
0xffff8788ccc5f050 |
Заголовки объектов.
Рис. 14 – заголовок объекта с дескриптором 4
Рис. 15 – заголовок объекта с дескриптором 8
Рис. 16 – заголовок объекта с дескриптором 12
Описания объектов. Проанализируем тип объектов.
Рис. 17 – описание объекта с дескриптором 4
Рис. 18 – описание объекта с дескриптором 8
Рис. 19 – описание объекта с дескриптором 12
Проанализируем структуру данных объектов.
4 дескриптор
Рис. 20 – структура данных объекта с дескриптором 4
8 дескриптор
Рис. 21 – структура данных объекта с дескриптором 8
12 дескриптор
Рис. 22 – структура данных объекта с дескриптором 12
Вывод: в ходе выполнения данной работы были исследованы объектные механизмы Win32, с помощью утилит Process Explorer, Handle и LiveKD был исследован процесс ConsoleApplication2.exe, был получен список объектов этого процесса и проанализированы дескрипторы 4, 8, 12 выбранного процесса.