Тимофеев 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 выбранного процесса.
