Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 33057

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

72  Часть 

II   

Работа с утилитами

Рис. 3-21.  Вкладка DLL в окне Select Columns

Поле Company также используется для проверки цифровых подписей ис-

полняемых файлов, подписанных их производителями (подробнее об этом —
ниже, в разделе о проверке подписи  образов). Если в проецируемый файл 
внедрен ресурс с названием компании и номером версии, а подпись еще не 
проверена, щелкните кнопку Verify. Эта функция полезна, когда нужно убе-
диться, что файл действительно получен от своего производителя и не был 
изменен посторонними. Если подпись проходит проверку, в поле Company 
отображается строка (Verified) и имя владельца сертификата, с которым 
подписан файл. Если проверка не выполнена, в поле отображается строка 
(Not verified) и название компании, взятое из файла образа. Если образ не 
подписан или проверка подписи не прошла, в столбце отображается строка 
(Unable to verify) и название компании.

Рис. 3-22.  Вкладка Strings диалогового окна DLL Properties

Вкладка Strings (Строки) окна Properties (рис. 3-22) отображает все по-

следовательности из трех и более пригодных для печати символов, найден-

SIN_ch_03.indd   72

27.12.2011   14:14:26


background image

Process Explorer  

Глава 3  73 

ных в проецируемом файле. Если установлен переключатель Image, стро-
ки читаются из дискового файла образа, а если установлен переключатель 
Memory, то из проекции файла в памяти. Строки, прочитанные из дискового 
файла и памяти, могут различаться, если на диске образ хранится в сжатом 
или зашифрованном виде и распаковывается либо расшифровываются при 
загрузке в память. Строки из памяти могут также включать динамически 
создаваемые области данных раздела памяти образа.

 Примечание 

В программировании термином «строка» означают структуру данных 

из последовательности знаков, как правило, образующих понятный текст.

Щелкните кнопку Save, чтобы сохранить отображаемые строки в тексто-

вый файл. Чтобы сравнить строки из файла и из памяти, сохраните их в раз-
ные отдельные файлы и откройте в программе для сравнения текстов. 

Для поиска строки в списке щелкните кнопку Find — откроется стандарт-

ное окно поиска. Для поиска других вхождений строки просто нажмите F3 
или снова щелкните Find либо Find Next  поиск продолжится с текущей 
выбранной строки.

Режим просмотра описателей

В режиме просмотра описателей Procexp отображает описатели, принадлежа-
щие выбранному на верхней панели процессу (рис. 3-23). Описатели програм-
мы используют для операций с системными объектами, которыми управляет 
код режима ядра. К ним относятся файлы, разделы реестра, синхронизирую-
щие объекты, разделы памяти, оконные станции и рабочие столы. Несмотря 
на разнообразие ресурсов, представляемых описателями, все объекты ядра 
используют их как унифицированный механизм управления доступом.

Рис. 3-23.  Нижняя панель Procexp в режиме просмотра описателей

SIN_ch_03.indd   73

27.12.2011   14:14:27


background image

74  Часть 

II   

Работа с утилитами

При попытке создать или открыть объект процесс запрашивает доступ 

для операций, которые он намеревается выполнять, например, доступ для 
чтения или записи. Если создать или открыть объект удалось, процесс за-
прашивает описатель к объекту, включающий предоставленные права до-
ступа. Этот описатель может использоваться для дальнейших операций над 
объектом в рамках предоставленных прав доступа. Даже если пользователь 
имеет полный доступ к объекту, но запрошен был только доступ для чтения, 
соответствующий описатель пригоден только для операций чтения.

Хотя программы работают с описателем как с «черным ящиком», он яв-

ляется обычным целым числом. Оно является байтовым смещением в та-
блице описателей процесса, которая создается в памяти ядра. В таблицу 
описателей заносится тип объекта, предоставленный доступ и указатель на 
структуру данных (собственно, на объект).

 Примечание 

Тем, кто программирует для Windows, знакомы типы данных из катего-

рии описателей, применяемых для управления объектами Диспетчера окон: HWND — 
для окон, HBRUSH — для кистей, HDC — для контекстов устройств и т. д. Эти объекты 
работают совсем иначе, чем рассматриваемые здесь описатели, никак с ними не свя-
заны и не вносятся в таблицу описателей процесса.

Учтите, загрузка DLL или отображение другого типа файла в адресное 

пространство процесса обычно не приводит к добавлению описателя в та-
блицу описателей процесса. Следовательно, такие файлы могут использо-
ваться и удалить их в этом случае невозможно, даже если найти соответ-
ствующие описатели не удается. Именно поэтому функция Find в Procexp 
ищет как DLL, так и описатели.

Для просмотра описателей, принадлежащих процессу, работающему в 

контексте безопасности, отличном от такового Procexp, необходимо запу-
стить Procexp с правами администратора.

По умолчанию в режиме просмотра описателей отображаются типы и 

имена всех именованных объектов, открытых процессом, выбранным на 
верхней панели. Можно выбрать отображение дополнительной информа-
ции о каждом описателе, а также информации о безымянных объектах.

Настройка режима просмотра
Чтобы изменить набор столбцы, отображаемых в режиме просмотра описате-
лей, нажмите Ctrl + H, чтобы войти в режим просмотра описателей, щелкни-
те правой кнопкой заголовок столбца на нижней панели и выберите Select 
Columns
 — откроется окно Select Columns с вкладкой Handle (рис. 3-24).

Следующие атрибуты не изменяются, пока описатель открыт:

•  Type  Тип защищенного объекта, к которому описатель предоставляет 

доступ, в частности, рабочий стол, каталог, файл, раздел и поток.

•  Name  Имя объекта. Для большинства типов объектов в имя входит про-

странство имен объекта, например \Device\Afd. Для объектов файловой 
системы и реестра, корневых разделов вместо внутренних имен отобража-
ются буквы диска и понятные имена, такие как \Device\HarddiskVolumel 

SIN_ch_03.indd   74

27.12.2011   14:14:27


background image

Process Explorer  

Глава 3  75 

(C:) и \REGISTRY\MACHINE\Software\Classes (HKCR). В описатель 
процесса входит имя процесса и PID; в имени описателя потока к этим 
сведениям прибавляется идентификатор потока (TID). В имя описателя 
маркера входят идентификаторы участника системы безопасности и се-
анса входа. Безымянные описатели по умолчанию не отображаются.

Рис. 3-24.  Вкладка Handle в окне Select Columns

•  Handle Value  (Значение описателя)  Значение описателя в шестнад-

цатеричной системе счисления, которое процесс передает API-функции 
для обращения к объекту. Это значение является байтовым смещением в 
таблице описателей процесса.

•  Access Mask (Маска доступа)  Битовая маска  (в шестнадцатеричном 

формате), определяющая, какие разрешения процесс получает через опи-
сатель. Каждый установленный бит означает предоставленное разреше-
ние для объекта. Так, разрешение «чтение» для раздела реестра выглядит 
как 0x00020019, а для файла — 0x00120089. Разрешение «полный доступ» 
для раздела реестра — 0x000F003F, а для файла — OxOOlFOlFF (подроб-
нее см. в материалах о правах и масках доступа в библиотеке MSDN).

•  File Share Flags (Флаги общего доступа к файлу)  Режим общего до-

ступа к объекту-файлу, установленный при открытии описателя. Флаги 
могут содержать буквы R, W или D, которые показывают, что другим 
программам (включая другие потоки того же процесса) разрешено от-
крывать файл, соответственно, для чтения, записи или удаления. Если ни 
один флаг не установлен, с таким описателем объект файловой системы 
открывается для монопольного доступа.

•  Object Address (Адрес объекта)  Адрес структуры данных, представ-

ляющий объект, в памяти ядра. Эта информация может использоваться 
отладчиком ядра для вывода дополнительной информации об объекте.

SIN_ch_03.indd   75

27.12.2011   14:14:27


background image

76  Часть 

II   

Работа с утилитами

Если в меню View выбрать пункт Show Unnamed Handles And Mappings, 

то в режиме просмотра описателей будут отображаться объекты, не имеющие 
связанного имени (учтите, что некоторые типы объектов всегда безымянны, 
другие же являются безымянными лишь время от времени). Безымянные 
объекты обычно создаются процессом для собственного использования. 
Они могут также наследоваться и использоваться дочерними процессами, 
если те могут определить, какой из унаследованных описателей следует ис-
пользовать. Описатели могут также копироваться из одного процесса в дру-
гой, при условии что процесс, копирующий описатель, обладает достаточ-
ным уровнем доступа к процессу, из которого копируется описатель.

 Примечание 

Procexp потребляет значительно больше ресурсов ЦП, если активен 

параметр Show Unnamed Handles And Mappings.

В режиме просмотра описателей главное меню содержит пункт Handle 

с командами Properties  и  Close Handle, последняя закрывает описатель. 
Обычно эта операция рискованна: процесс, которому принадлежит опи-
сатель, не «знает», что описатель закрыт, поэтому использование данной 
функции может привести к повреждению данных или краху приложения. 
Закрытие описателя в процессе System или критическом процессе пользо-
вательского режима, например Csrss, может привести к краху системы.

Рис. 3-25.  Окно свойств описателя

Если дважды щелкнуть описатель или выбрать Properties в меню Handle

откроется окно Properties для данного описателя. На вкладке Details 
(рис. 3-25) отображаются внутреннее имя объекта, а в поле Name — его по-
нятное имя. Так, имена \Device\HarddiskVolume2\Windows\ System32 и C:\
Windows\System32 равноценны. В окне также содержится более подробное 
описание объекта c коротким именем. В секции References (Ссылки) ото-

SIN_ch_03.indd   76

27.12.2011   14:14:27