Главная страница

Лабораторная работа Ревизия 3 2 История изменений


Скачать 1.7 Mb.
НазваниеЛабораторная работа Ревизия 3 2 История изменений
Дата14.09.2020
Размер1.7 Mb.
Формат файлаpdf
Имя файлаSysinternals.pdf
ТипЛабораторная работа
#137950
страница10 из 10
1   2   3   4   5   6   7   8   9   10
ЭКСПЕРИМЕНТ 13: утилита Autoruns
Чтобы увидеть, какие программы настроены на автоматический запуск на вашем компьютере, запустите утилиту Autoruns; Сравните полученный в
Autoruns список с тем, что показывается Msconfig (доступной в Windows XP и
Windows Server 2003), и обратите внимание на различия.

71
Рис. 19. Использование утилиты Autoruns
ЭКСПЕРИМЕНТ 14: просмотр и изменение привязки процесса к
процессорам
B этом эксперименте вы модифицируете привязку процесса к процессорам и убедитесь, что привязка наследуется новыми процессами.
1. Запустите окно командной строки (cmd.exe).
2. Запустите диспетчер задач или Process Explorer и найдите cmd.exe в списке процессов.
3. Щелкните этот процесс правой кнопкой мыши и выберите команду Set
Affinity (Задать соответствие). Должен появиться список процессоров.
Рис. 20. Список процессоров
4. Выберите подмножество доступных процессоров в системе и нажмите ОК.
Теперь потоки процесса будут работать только на выбранных вами процессорах.
5. Запустите Notepad.exe из окна командной строки (набрав notepad.exe).
6. Вернитесь в диспетчер задач или Process Explorer и найдите новый процесс Notepad. Щелкните его правой кнопкой мыши и выберите Set
Affinity. Вы должны увидеть список процессоров, выбранных вами для процесса cmd.exe. Это вызвано тем, что процессы наследуют привязки к процессорам от своего родителя.

72
ЭКСПЕРИМЕНТ 15: просмотр событий уведомления ресурса памяти
Для просмотра событий уведомления ресурса памяти (memory resource notification events) запустите Winobj (www.sysintemals.com) и щелкните каталог
KernelObjects.
B правой секции окна
– события LowMemoryCondition иHighMemoryCondition.
Рис. 21. Просмотр событий
Если дважды щелкнуть любое из событий, то можно узнать, сколько описателей и/или ссылок открыто на эти объекты.
Чтобы выяснить, есть ли в системе процессы, запросившие уведомления о ресурсе памяти, ищите в таблице описателей ссылки на «LowMemoryCondition» или «HighMemoryCondition». Это можно сделать в Process Explorer (команда
Handle в меню Find) или в утилите Oh.exe из ресурсов Windows.
ЭКСПЕРИМЕНТ 16: просмотр сопоставлений Windows-имен устройств
внутренним именам устройств.
Утилита Winobj (www.sysintemals.com) позволяет исследовать символьные ссылки, определяющие пространство Windows-имен устройств. Запустите
Winobj и выберите каталог \?? в Windows 2000 или \Global?? в Windows XP либо
Windows Server 2003.

73
Рис. 22. Просмотр символьных ссылок
Обратите внимание на символьные ссылки справа. Попробуйте дважды щелкнуть устройство С: — вы должны увидеть нечто вроде того, что показано ниже.
Рис. 23. Окно свойств
С: представляет собой символьную ссылку на внутреннее устройство с именем
\Device\HarddiskVolumel, или на первый том первого жесткого диска в системе.
Элемент COMl, показанный Winobj, — символьная ссылка на \Device\SerialO и т. д. Попробуйте создать собственные ссылки командой subst в командной строке.
ЭКСПЕРИМЕНТ 17: просмотр INF-файла драйвера
При установке драйвера или другого программного обеспечения, у которого есть INF-файл, система копирует этот файл в каталог \Win-dows\Inf. Один из

74 файлов, которые всегда будут в этом каталоге, — Keyboard.inf, поскольку это
INF-файл для драйвера класса клавиатур. Содержимое данного файла:
Copyright (с) 1993–1996, Microsoft Corporation
[version] signature="$Windows NT$" Class=Keyboard
ClassGUID={4D36E96B-E325-11CE-BFC1-08002BE10318}
Provider=XMSX
LayoutFile=layout.inf
DriverVer=07/01/2001, 5.1.2600.1106
[ClassInstall32.NT] AddReg=keyboa rd_class_add reg
Если вы проведете поиск в этом файле по «.sys», то обнаружите запись, указывающую диспетчеру PnP пользовательского режима установить драйверы i8042prt.sys и kbdclass.sys:
[STANDARD_CopyFiles]
i8042prt.sys kbdclass.sys
ЭКСПЕРИМЕНТ 18: просмотр САТ-файлов
При установке компонента, например драйвера, файлы которого включают
САТ-файл,
Windows копирует этот файл в подкаталог каталога
\Windows\System32\Catroot. Перейдите в этот каталог с помощью Explorer и найдите подкаталог с САТ-файлами. B частности, в Nt5.cat и Nt5inf.cat хранятся подписи для системных файлов Windows.
Открыв один из САТ-файлов, вы увидите диалоговое окно с двумя вкладками:
General (Общие), на которой показывается информация о подписи в данном файле, и Security Catalog (Каталог безопасности), где представлены хэши компонентов, подписанных с использованием этого САТ-файла. Ниже дан пример САТ-файла.

75
Рис. 24. пример САТ-файла
ЭКСПЕРИМЕНТ 19: наблюдение за вводом-выводом на физическом диске
C помощью механизма Event Tracing for Windows драйвера класса дисков утилита Diskmon от Sysinternals ведет мониторинг активности ввода-вывода на физических дисках и отображает ее в своем окне. Содержимое этого окна обновляется раз в секунду. Для каждой операции Diskmon показывает время, длительность, номер целевого диска, тип и смещение, а также длину.
Рис. 25. Использование утилиты Diskmon
ЭКСПЕРИМЕНТ 20
:
просмотр информации NTFS

76
Для просмотра информации о NTFS-томе, в том числе о размещении и размере
MFT и зоны MFT, вы можете использовать в Windows 2000 утилиту NTFSInfo (с сайта www.sysinternals.com), а в Windows XP или Windows Server 2003 — встроенную программу командной строки Fsutil.exe:
C:\Users\+SysinternalsSuite>fsutil fsinfo ntfsinfo c:
Серийный номер тома NTFS: 0x566c307c6c3058c7
Версия: 3.1
Число секторов: 0x0000000005d21db9
Всего кластеров: 0x0000000000ba43b7
Свободных кластеров: 0x00000000006322f7
Всего зарезервировано: 0x00000000000007e0
Байт на сектор: 512
Байт на кластер: 4096
Байт на сегмент FileRecord: 1024
Кластеров на сегмент FileRecord: 0
Допустимая длина данных MFT: 0x0000000004b40000
Начальный LCN таблицы MFT: 0x00000000000c0000
Начальный LCN таблицы MFT2: 0x0000000000000002
Начало зоны таблицы MFT: 0x0000000000512d00
Конец зоны таблицы MFT: 0x000000000051f520
Идентификатор ДР: 31BB093B-EDBA-11E0-8856-BEE2A1F45734

77
ЭКСПЕРИМЕНТ 21: просмотр пространства имен именованных каналов и
наблюдение за активностью таких каналов
Открыть корневой каталог FSD именованных каналов и перечислить его содержимое с помощью Windows API нельзя — для этого нужно воспользоваться сервисами встроенного
API.
Утилита
PipeList
(www.sysinternals.com) перечисляет именованные каналы, определенные на компьютере, число созданных экземпляров канала с данным именем и максимальное число каналов, заданное сервером при вызове Create-
NamedPipe. Вот пример вывода PipeList.
Рис. 26. Пример вывода PipeList
Из этого листинга ясно, что некоторые системные компоненты используют именованные каналы как механизм связи.

78
ЭКСПЕРИМЕНТ 22: просмотр NetBIOS-имен через Nbtstat
Для вывода списка активных сеансов в системе, кэшируемых сопоставлений
NetBIOS-имен и IP-адресов, а также NetBIOS-имен, определенных на компьютере, можно использовать встроенную в Windows команду Nbtstat. Ниже приведен пример вывода этой команды с параметром — n, при указании которого выводится список NetBIOS-имен, определенных на компьютере
C:\>nbtstat -n
Рис. 27. Использование команды Nbtstat
ЭКСПЕРИМЕНТ 23: анализ утечки памяти в пуле
Утечка будет создаваться утилитой NotMyFault, которую можно скачать по ссылке www.sysintemals.com/windowsinternalsshtmL.
После запуска
NotMyFault.exe загружается драйвер устройства Myfault.sys и выводит такое диалоговое окно.

79
Рис. 28. Использование утилиты NotMyFault
1. Щелкните кнопку Leak Pool. Это заставит NotMyFault посылать запросы драйверу устройства Myfault на выделение памяти из подкачиваемого пула. (He нажимайте кнопку Do Bug, иначе вы вызовете крах системы).
NotMyFault продолжит посылать запросы, пока вы не щелкнете кнопку
Stop Leaking. Заметьте, что пул подкачиваемой памяти не освобождается даже при закрытии программы; в нем происходит постоянная утечка памяти до перезагрузки системы. Однако, поскольку утечка пула будет непродолжительной, это не должно вызвать никаких проблем в вашей системе.
2. Пока происходит утечка памяти в пуле, сначала откройте диспетчер задач и перейдите на вкладку Performance (Быстродействие). Вы увидите, как растет показатель Paged Pool (Выгружаемая память). To же самое можно увидеть в окне System Information утилиты Process Explorer. (Выберите
Show и System Information.)
3. Чтобы определить метку пула, где происходит утечка, запустите Poolmon и нажмите клавишу b, чтобы сортировать по числу байтов. Дважды нажмите клавишу p для отображения в Poolmon только пула подкачиваемой памяти.
Вы должны заметить, что пул с меткой «Leak» поднимается вверх по списку. (Poolmon выделяет строки, где происходят изменения.)
4. Теперь щелкните кнопку Stop Leaking, чтобы не истощить пул подкачиваемой памяти в своей системе.
5. Используя приемы, описанные в предыдущем разделе, запустите Strings
(ее можно скачать с www.sysinternals.com) для поиска двоичных файлов драйвера, содержащих метку пула «Leak»:
Strings \windows\system32\drivers\*.sys | findstr Leak
Эта команда должна указать на файл Myfault.sys.

80
ЭКСПЕРИМЕНТ 24: определение истинного стартового адреса Windows-
потоков
Рис. 29. Стартовый адрес процесса
cmd.exe
(утилита Pstat)
Рис. 30. Стартовый адрес процесса
cmd.exe
(утилита Tlist)
Стартовый адрес нулевого потока, сообщаемый Pstat, соответствует внутренней
Windows-функции start-of-process, а стартовые адреса потоков 1–3 указывают адреса внутренних Windows-функций start-of-thread. C другой стороны, Tlist показывает стартовый адрес пользовательской функции, вызываемой внутренней стартовой Windows-функцией.
Поскольку большинство потоков в Windows-процессах начинается в одной из системных функций-оболочек, Process Explorer, показывая стартовые адреса потоков в процессе, пропускает фрейм начального вызова, представляющий функцию-оболочку, и вместо этого отображает второй фрейм в стеке.
Например, обратите внимание на стартовый адрес потока в процессе, выполняющем Notepad.exe (Process\Properties\Threads).

81
Рис. 31. Список потоков процесса Notepad.exe
Process Explorer не выводит всю иерархию вызовов при отображении стека вызовов. Вот что вы получите, щелкнув кнопку Stack.
Рис. 32. Стек выбранного потока
B строке 12 на этой иллюстрации показан первый фрейм в стеке — начало процесса-оболочки. Второй фрейм (строка 11) является основной точкой входа в Notepad.exe.

82
ЭКСПЕРИМЕНТ 25: наблюдение за частотой вызова системных сервисов
Можно наблюдать за частотой вызова системных сервисов с помощью счетчика
«Системных вызовов/сек» объекта «Система». Для этого нужно открыть оснастку
«Производительность»
(Пуск\
Панель управления\
Администрирование\ Производительность)и нажать кнопку «Добавить», чтобы добавить на график счетчик. Выберите объект «Система» и счетчик «Системных
вызовов/сек», затем щелкнуть кнопки «Добавить» и «Закрыть».
Рис. 33. Частота вызова системных сервисов
ЭКСПЕРИМЕНТ 26: просмотр заголовков объектов и объектов типа
Можно увидеть список объектов типа, объявленных диспетчеру объектов, с помощью утилиты Winobj (из пакета SysinternalsSuite). Далее в Winobj нужно открыть каталог ObjectTypes.

83
Рис. 34. Список объектов типа
Чтобы просмотреть структуру данных типа объектов «процесс» в отладчике ядра, сначала идентифицируйте этот объект командой !process 0 0 (Debugging
Tools for Windows (x86), утилита livekd).
Рис. 35. Структура данных типа объектов "процесс"
Затем нужно выполнить команду !object, указав адрес объекта «процесс» в качестве аргумента:
Рис. 36. Объект указанного процесса
Увидеть заголовок объекта позволяет команда dt _object_header (аргумент
ObjectHeader).

84
Рис. 37. Заголовок указанного объекта
Чтобы просмотреть структуру данных типа указанных объектов нужно использовать команду dt _object_type (аргумент адрес поля Type).
Рис. 38. Структура данных типа указанных объектов
Этот вывод показывает, что структура типа включает имя типа объекта, счетчики активных объектов этого типа, а также счетчики пикового числа описателей и объектов данного типа. B поле TypeInfo хранится указатель на структуру данных, в которой содержатся атрибуты, общие для всех объектов этого типа, а также указатели на методы типа (команда _object_type_initializer, аргумент адрес поля Type + адрес поля TypeInfo):

85
Рис. 39. Структура данных _object_type_initializer
ЭКСПЕРИМЕНТ 27: наблюдение за загрузкой и выгрузкой профилей
Чтобы увидеть, как профиль загружается в реестр, а потом выгружается, запустите командой runas какой-нибудь процесс под учетной записью пользователя, не вошедшего на данный момент в систему.
Рис. 40. Использование команды Runas
Пока новый процесс выполняется, запустите Regedit и обратите внимание на загруженный раздел профиля в HKEY_USERS. После завершения процесса нажмите в Regedit клавишу F5 для обновления, и этого профиля в реестре больше не будет.
ЭКСПЕРИМЕНТ 28: анализ операций с реестром в простаивающей
системе
Поскольку реестр реализует функцию RegNotiJyChangeKey, с помощью которой приложения могут запрашивать уведомление об изменениях в реестре, не опрашивая его постоянно, в простаивающей системе Regmon не должен обнаруживать повторяющиеся обращения к одним и тем же разделам или параметрам реестра. Любая такая активность указывает на плохо написанное приложение, которое отрицательно влияет на общую производительность системы.
Запустите Regmon и через несколько секунд изучите журнал вывода, чтобы выяснить, не пытается ли какая-то программа постоянно опрашивать реестр.

86
Рис. 41. Использование утилиты Regmon
Найдя в выводе строку, связанную с опросом, щелкните ее правой кнопкой мыши и выберите из контекстного меню команду Process Properties, чтобы узнать, какой процесс занимается такой деятельностью.
ЭКСПЕРИМЕНТ 29: загрузка и выгрузка кустов вручную
Regedit в Windows XP или Windows Server 2003 позволяет загружать кусты, к которым можно обращаться через меню FiIe редактора реестра. Такая возможность полезна при анализе проблем, когда нужно просмотреть или отредактировать куст, полученный с незагружаемой системы или из резервной копии.
1. Кусты можно загружать только в HKLM или HKU, поэтому откройте
Regedit,
2.
укажите HKLM, а затем выберите «Загрузить куст» из меню
«Файл».
3.
Перейдите в каталог С:\Windows\Repair в диалоговом окне Load Hive
«Загрузить куст», выберите System.bak и откройте его. При запросе введите Test в качестве имени раздела, в который будет загружаться этот куст.
Откройте только что созданный раздел HKLM\Test и изучите содержимое куста.

87
Рис. 42. Содержимое созданного куста
4. Откройте HKLM\Systern\CurrentControlSet\Control\Hivelist и найдите элемент
\Registry\Machine\Test, который продемонстрирует, как диспетчер конфигурации перечисляет загруженные кусты в разделе
HiveList.
5. Укажите HKLM\Test и выберите «Выгрузить куст» из меню «Файл» для выгрузки этого куста.
ЭКСПЕРИМЕНТ 30: просмотр описателей кустов
Просмотреть описатели кустов можно с помощью утилиты Process Explorer. B
Windows 2000 диспетчер объектов сообщает об описателях из таблицы как об открытых в системном процессе System Idle, а в Windows XP и Windows Server
2003 он показывает описатели как открытые в процессе System. Укажите нужный процесс и выберите Handles из подменю Lower Pane View в меню View.
Задайте сортировку по типу описателя и прокручивайте список, пока не увидите файлы кустов.
Рис. 43. Описатели кустов

88
ЭКСПЕРИМЕНТ 31: наблюдение за использованием пула подкачиваемой
памяти для кустов реестра
Административных утилит, которые показывали бы объем памяти из подкачиваемого пула, используемой кустами реестра вместе с профилями пользователей, в Windows 2000 нет. Однако команда !reg dumppool отладчика ядра сообщает не только число страниц, задействованных каждым загруженным кустом, но и количество страниц, занятых постоянными и переменными данными. B конце отчета команда выводит суммарный объем памяти, занятой кустами реестра. (Эта команда показывает лишь последние 32 символа в имени куста.)
Пример использования команды kd> !reg dumppool:
kd> !reg dumppool
dumping hive at e1a25008 (\SystemRoot\System32\Config\SAM)
Stable Length = 7000
6/7 pages present
Volatile Length = 0
dumping hive at e1a14b60 (emRoot\System32\Config\SECURITY)
Stable Length = c000
4/12 pages present
Volatile Length = 1000
can't read HMAP_ENTRY at e24c5000
0/1 pages present
Total pages present = 4114 / 17095
ЭКСПЕРИМЕНТ 32: просмотр блоков управления разделами
Команда !reg openkeys отладчика ядра позволяет перечислить все блоки управления разделами, созданные в системе. B качестве альтернативы, если вы хотите просмотреть блок управления разделом для конкретного открытого раздела, используйте !reg findkcb.
Рис. 44. Использование команды !reg findkcb
Для анализа блока управления разделом, о котором сообщила предыдущая команда, предназначена команда !reg kcb.

89
Рис. 45. Использование команды !reg kcb
Поле Flags указывает, что имя хранится в сжатой форме, а поле SubKeyCount — что в разделе имеется 137 подразделов.
Литература
1. Microsoft Developer Network. URL: http://www.msdn.com
2. Руссинович М, Соломон Д. Внутренне устройство Microsoft Windows: Windows
Server 2003, Windows XP и
Windows 2000. URL: http://www.nrjetix.com/fileadmin/doc/publications/additional_info/Russinovich_M_Solomon
_D_Inside_Microsoft_Windows.djvu
3. Основные инструменты работы с ОС семейства Microsoft Windows - Windows
Sysinternals Suite. URL: http://technet.microsoft.com/ru-ru/sysinternals/default.aspx
1   2   3   4   5   6   7   8   9   10


написать администратору сайта