Операционные системы, Исследование объектов Windows. Исследование объектов Windows
Скачать 1.18 Mb.
|
МИНОБРНАУКИ РОССИИ Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) Кафедра вычислительной техники отчет по лабораторной работе № 1 по дисциплине «Операционные системы» Тема: Исследование объектов Windows
Санкт-Петербург 2018 Цель работы Исследование объектных механизмов Win32. Ход работы Задание 1.1. Получение списка отрытых объектов и изучение типов объектов Утилита Process Explorer – замена диспетчера задач Windows с более подробной информацией о процессах и потоках. Запускаем её от имени администратора. Рассмотрим работу утилиты на примере приложения Калькулятор - процесс calc.exe. Получим краткую информацию и список объектов, принадлежащих ему. Рисунок 1.1. Демонстрация объектов, принадлежащих процессу calc.exe Далее от имени администратора запустим из командной строки утилиту Handle. Параметры запуска дадут информацию обо всех объектах, принадлежащих процессу. Получим список объектов, принадлежащих процессу calc.exe, (рис. 1.2) Списки объектов, показанные на рис. 1.1 и рис. 1.2, как и предполагалось, одинаковы. Рисунок 1.2. Скриншот с демонстрацией списка объектов, принадлежащих процессу с PID 6512. Далее запускаем утилиту с параметрами . Просмотрим сводный список с количеством объектов разного типа, принадлежащих процессу calc.exe. (рис. 1.3) Рисунок 1.3. Список с количеством объектов разного типа, принадлежащих процессу с PID 6512. Запуск Handle.exe с параметрами выдаёт сводный список с количеством объектов разного типа всех процессов системы. Рисунок 1.4. Сводный список объектов всех процессов системы Опишем назначение каждого из этих типов: ALPC Port – объект ядра, реализующий механизм межпроцессорного взаимодействия. Desktop – файл рабочего стола, ярлык приложения: предоставляет информацию о программе в меню программы – имя, файл значка, команда запуска и т.д. Directory – каталог: файл, содержащий записи о других связанным с процессом файлов, настройки просмотра папки для каталога. EtwRegistration – объект регистрации, связанный с ETW-провайдером пользовательского режима, зарегистрированный с помощью API-функции EventRegister. Event – скрытый файл, содержащий информацию об изменении содержимого папки с течением времени и используемый для синхронизации или уведомления. File – общий файл, экземпляр открытого файла или устройства ввода-вывода. Key – раздел реестра, механизм ссылки на данные реестра. Mutant – механизм обеспечения взаимного исключения для сред Win32 и OS/2. Process – виртуальное адресное пространство и информация для выполнения набора объектов «поток». Section – область разделяемой памяти. Semaphore – счётчик, ограничивающий доступ к ресурсу путем его запрета или разрешения. SymbolicLink – механизм косвенной ссылки на имя объекта. Thread – исполняемая категория внутри процесса. Timer – механизм уведомления потока об истечении конкретного периода времени. Token – закодированный идентификатор, содержащий информацию о правах доступа пользователей. TpWorkerFactory – коллекция потоков, назначенных для выполнения конкретного набора задач. WindowStation – Объект, содержащий буфер обмена, набор глобальных атомов и группу объектов типа рабочий стол Значения остальных типов найти не удалось. Закроем дескриптор объекта, открытого процессом, не завершая сам процесс. С помощью команды <формат> получим список объектов данного формата, открытых на настоящий момент. Откроем два файла формата .docx (рис. 1.5). Рисунок 1.5. Скриншот – получение дескрипторов открытых файлов с расширением .docx Затем с помощью команды <идентификатор процесса> –y закроем второй дескриптор и снова просмотрим список для .docx – рис. 1.6. Рисунок 1.6. Принудительное закрытие дескриптора Из рис. 1.6 видно, что дескриптор текстового документа закрыт, но сам документ закрыт не был – процесс не завершился. При изменении в документе текста с последующим сохранением заметим, что дескриптор был снова открыт. Задание 1.2. Изучение хранения информации об объектах процесса Программа LiveKD позволяет запускать отладчик ядра Microsoft Kd, входящий в состав WDK, не переводя систему в режим отладки. Запустим программу и получим полную информацию о таблице дескрипторов с её помощью. С помощью команды получим информацию из элементов таблицы. Если значение установить 0, получим информацию обо всех объектов процесса. Установим как 0, чтобы получить только информацию из элемента таблицы. (рис.2.1) рассматриваемого процесса . Рисунок 2.1. Получение информации из элементов таблицы процесса calc.exe Сверяя этот список с упорядоченным по графе списком объектов данного процесса в программе Process Explorer, видим полное совпадение. Шаг выполнен правильно. Установим как 3 для получения полной информации о таблице дескрипторов. (рис. 2.2) Также получим полную информацию об одном конкретном объекте процесса, записав на место handle одного из объектов процесса. (рис.2.3) Рисунок 2.2. Скриншот - получение полной информации обо всех объектах процесса calc.exe Рисунок 2.3 Получение полной информации об объекте с handle fc, принадлежащем процессу calc.exe Команда выдаёт краткую информацию о всех процессах вычислительной системы Рисунок 2.4. Краткая информация о процессе calc.exe Отсюда получаем адрес таблицы процесса calc.exe (ObjectTable) . Просмотрим поля таблицы с помощью команды (рис. 2.5) Рисунок 2.5. Поля таблицы объектов процесса В поле TableCode лежит значение . В двух младших битах значение нулевое, значит, в таблице только один уровень. Остальные биты представляют указатель на таблицу с элементами типа TABLE_ENTRY. Далее перейдём по физическому адресу таблицы с помощью команды (рис. 2.6) Рисунок 2.6. Таблица дескрипторов процесса Первый объект в таблице имеет идентификатор (смещение элемента в таблице) 4, второй 8, а третий – 12. Смещение на 4 объясняется тем, что каждому объекту в соответствие ставится 4 слова. Составляем адреса объектов по принципу <старшие 32 бита> <первая тетрада первого машинного слова в таблице>: ; ; ; Далее с помощью команды <физический адрес заголовка> получим содержимое заголовка объектов с дескрипторами 4, 8, 12 (рис. 2.7 – 2.9). Примечание: продолжение работы выполнялось на следующий день, поэтому адреса различаются. Аналогичным способом получили, что для дескриптора 4 адрес , для 8 - FFFFE000D31A5EF0, для 12 - FFFFE000D3021810 Таким образом, сверяя адреса объектов, вычисленные по таком принципу, с адресами объектов того же процесса в Process Explorer, получаем несовпадение на то есть смещение адреса самого объекта относительно заголовка на 30. Объекты: Рисунок 2.7. Содержимое заголовка объекта с дескриптором 4 Рисунок 2.8. Содержимое заголовка объекта с дескриптором 8 Рисунок 2.9. Содержимое заголовка объекта с дескриптором 12 Команда <адрес заголовка>+ , где – поле в формате в заголовке, выдаёт описание самого объекта. В данном случае . Результаты показаны на рис. 2.10 - 2.12. Рисунок 2.10. Описание объекта с дескриптором 4 Рисунок 2.11. Описание объекта с дескриптором 8 Рисунок 2.12. Описание объекта с дескриптором 12 Команда , где - поле в полученной после выполнения информации, выдаст сведения о типе объекта (имя типа, счётчики активных объектов, счётчики пикового числа дескрипторов и объектов данного типа). Рисунок 2.13. Сведения о типе для объекта с дескриптором 4 Рисунок 2.14. Сведения о типе для объекта с дескриптором 8 Рисунок 2.15. Сведения о типе для объекта с дескриптором 12 Заметим, что для объектов с дескрипторами 8 и 12 типы одинаковы. Для анализа структуры данных, в которой содержатся общие для всех объектов типа атрибуты, используем команду <физический адрес>+_ , где – смещение относительно начала структуры сведений о типе объекта. Структуры с общими для типов объектов с дескрипторами 4, 8 и 12 атрибутами представлены на рис. 2.16 -2.18. Рисунок 2.16. Структура с общими атрибутами и методами для объектов типа Directory Рисунок 2.17. Структура с общими атрибутами и методами для объектов типа File Вывод В ходе работы были исследованы объектные механизмы Win32 с использованием LiveKD, Handle и Process Explorer на примере процесса notepad.exe, был получен список объектов этого процесса и проанализированы дескрипторы 4, 8, 12 выбранного процесса. Полученные с помощью утилит списки объектов совпали. Удалось получить представление о хранении информации в системе. Проанализированы некоторые дескрипторы процесса. Найти информацию о типах объектов, используемых для хранения данных. |