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

Часть II
Работа с утилитами
Глава 3. Process Explorer ............................................................................ 38
Глава 4. Process Monitor ............................................................................. 99
Глава 5. Autoruns ........................................................................................ 142
Глава 6. PsTools .......................................................................................... 169
Глава 7. Утилиты для работы с процессами и диагностики .............. 211
Глава 8. Утилиты системы безопасности .............................................. 262
Глава 9. Утилиты для работы с Active Directory ................................... 290
Глава 10. Утилиты рабочего стола ......................................................... 311
Глава 11. Утилиты для работы с файлами ............................................ 327
Глава 12. Утилиты для работы с диском ............................................... 337
Глава 13. Сетевые и коммуникационные утилиты .............................. 353
Глава 14. Утилиты для получения информации о системе ............... 361
Глава 15. Другие утилиты ......................................................................... 378
SIN_ch_03.indd 37
27.12.2011 14:14:18

Глава 3
Process Explorer
Процесс — это базовая сущность для любого компьютера, работающего под
управлением Microsoft Windows. Зная процессы, запущенные в данный мо-
мент, легко разобраться в утилизации времени центрального процессора
(ЦП) и других ресурсов, диагностировать неполадки и выявлять вредонос-
ное ПО. Чаще всего с сайта Sysinternals скачивают Process Explorer и, в чем
вы вскоре убедитесь, не без оснований.
Чтобы пользователям было проще разобраться в действиях процессов,
работающих на их компьютерах, в Windows с самых первых версий присут-
ствовал компонент Task Manager (Диспетчер задач) — простое приложение
для просмотра процессов (приложений и служб), работающих в системе.
Чтобы не перегружать пользователей избыточной информацией, Диспетчер
задач предоставляет ограниченные сведения. То есть пользователи видят
простые списки процессов, служб, пользователей, графики параметров про-
изводительности системы и активности сети, а также абстрактный перечень
«Приложения» (по сути, список видимых окон в текущем сеансе пользова-
теля). К Диспетчеру задач пользователи обычно прибегают, чтобы узнать,
почему компьютер медленно работает и, при необходимости, завершить
сбойные процессы. Зачастую его информации недостаточно для выяснения
причин сбоя процесса и распознавания вредоносного ПО.
Еще на заре Sysinternals мы с Брюсом Когсвеллом создали множество
утилит для заполнения пробелов в данных, выводимых Диспетчером за-
дач. Эти утилиты отслеживали разнообразные аспекты процессов и служб
Windows, регистрируя более подробные сведения. Первые три утилиты
— PsList, DLLView, и HandleEx (сейчас — просто Handle), положили нача-
ло инструментарию Sysinternals для получения подробной информации о
процессах. Все они доступны и сейчас, но речь о них пойдет в других гла-
вах. Однако вскоре стало ясно, что нужна более удобная программа с еди-
ным графическим интерфейсом, чтобы докопаться до сути происходящего
в Windows посредством анализа процессов. Так появился Process Explorer
(кратко — Procexp).
SIN_ch_03.indd 38
27.12.2011 14:14:20

Process Explorer
Глава 3 39
Обзор Procexp
Procexp несомненно является наиболее функциональной из всех ути-
лит Sysinternals и затрагивает больше аспектов внутреннего устройства
Windows, чем остальные (см. главу 2). Вот лишь некоторые основные функ-
ции Procexp:
• отображение дерева родства процессов;
• цветовая подсветка различных типов процессов, таких как: службы, про-
цессы .NET, процессы, работающие под той же учетной записью пользо-
вателя, что и Procexp, процессы, являющиеся частью задания, и упако-
ванные образы;
• отображение в подсказках информации о командной строке и других
процессах;
• выделение новых и недавно завершившихся процессов;
• более точное отображение утилизации ЦП, благодаря чему процессы, по-
требляющие менее 1% времени ЦП, не отображаются как бездействую-
щие;
• более точные показания загруженности ЦП на основе счетчиков циклов
ЦП и переключений контекста;
• дублирование функций Диспетчера задач, который Process Explorer
вполне заменяет;
• возможность определить процесс, которому принадлежит то или иное
видимое окно на рабочем столе;
• возможность найти окно, принадлежащее указанному процессу, активи-
ровать его или закрыть;
• идентификация всех DLL и проецируемых файлов, загруженных процес-
сом, а также всех описателей объектов ядра, открытых процессом;
• поиск процессов с открытыми описателями к объектам ядра, в частности,
файлам и папкам;
• поиск процессов, загружавших DLL, идентификация ее пути и других
атрибутов;
• графическое представление активности ЦП, выделения памяти и актив-
ности ввода-вывода как для системы в целом, так и для отдельных про-
цессов;
• подробные метрики использования памяти и активности ввода-вывода;
• подробная информация о контексте защиты процесса;
• подробная информация о конечных точках TCP/IP для процесса;
• просмотр потоков процесса, их начальных адресов и стеков;
• выгрузка процесса.
Procexp отображает информацию о процессах в нескольких режимах.
Окно Procexp по умолчанию состоит из дерева процессов (рис. 3-1; подроб-
нее см. ниже). Procexp может разбивать главное окно на верхнюю и нижнюю
SIN_ch_03.indd 39
27.12.2011 14:14:20

40 Часть
II
Работа с утилитами
панели. На верхней панели находится список процессов, а на нижней — ре-
жим просмотра DLL или режим просмотра описателя. С помощью режима
просмотра DLL можно более подробно изучать DLL и проецируемые файлы,
загруженные процессом, выбранным на верхней панели. Режим просмотра
описателя позволяет исследовать все объекты ядра, открытые в данный мо-
мент выбранным процессом, включая файлы, папки, разделы реестра, окон-
ные станции, рабочие столы, конечные точки сети и объекты синхрониза-
ции, но не ограничиваясь ими. Режимы просмотра DLL и описателей в под-
робностях рассматриваются ниже в этой главе. Диалоговое окно Properties
(Свойства) для процесса предоставляет огромное количество информации
о конкретном процессе (см. ниже).
Procexp работает в Windows XP и более поздних версиях с архитектурой
x86, x64, и IA64, а также в Windows Server 2003 и выше.
Рис. 3-1. Дерево процессов в Procexp
Мониторинг загруженности ЦП
Ранние версии Windows могли лишь приблизительно измерять реальную за-
груженность центрального процессора. В момент прерывания, генерируемо-
го часами (в большинстве систем интервал между ними составляет 15,6 мс),
SIN_ch_03.indd 40
27.12.2011 14:14:20

Process Explorer
Глава 3 41
Windows идентифицирует поток, исполняемый в данный момент на каждом
ЦП. Если поток исполняется в режиме ядра, его время ядра увеличивается
на 15,6 мс, в противном случае увеличивается его время работы в пользова-
тельском режиме (на ту же величину). Возможно, поток успел проработать
в течение лишь нескольких тактов ЦП к моменту прерывания, но ему все
равно «начисляется» весь интервал длиной 15,6 мс. В течение этого времени
могли исполняться сотни разных потоков, но время добавляется только по-
току, «застигнутому» прерыванием системных часов в момент исполнения.
Диспетчер задач Windows использует эти приблизительные данные в отче-
тах о загруженности ЦП даже в более поздних версиях Windows, имеющих
более точные показатели. Точность данных Диспетчера задач еще больше
снижается при округлении до ближайших целых при расчете относитель-
ных величин, так что процессы, потоки которых занимают менее 1% време-
ни ЦП, не отличаются от бездействующих процессов. Наконец, Диспетчер
задач не учитывает время, затраченное ЦП на обслуживание прерываний и
отложенные вызовы процедур (DPC), ошибочно приписывая его процессу
System Idle (Бездействие системы).
Procexp отображает загруженность ЦП точнее Диспетчера задач. Во-
первых, Procexp по умолчанию показывает загруженность ЦП каждым про-
цессом в процентах с точностью до сотой, а не до целого числа. Во-вторых,
Procexp отслеживает время, затраченное на обслуживание прерываний и
DPC, не приписывая его процессу System Idle. Наконец, Procexp использует
дополнительные системные показатели, что позволяет идентифицировать
процессы, слабо загружающие ЦП, и точнее учитывать фактическую загру-
женность ЦП. В Windows XP, Vista и Windows 7, а также в соответствующих
серверных версиях для этого предусмотрены разные счетчики. Procexp ис-
пользует все доступные счетчики для достижения максимальной точности
измерений.
Во всех поддерживаемых версиях Windows все потоки регистрируют
свои переключения контекста, т. е. число переключений контекста ЦП, вы-
полненных для начала исполнения потока. Procexp отслеживает изменения
соответствующих значений в поле Context Switch Delta (Увеличение числа
переключений контекста). Это позволяет видеть даже процессы, слабо за-
гружающие ЦП. К ним обычно относятся процессы, которые периодически
«просыпаются» для поиска изменений состояния и не используют систем-
ные механизмы синхронизации (иначе такие процессы могли бы «спать» до
фактического изменения состояния). Такие процессы потребляют больше
ресурсов, чем нужно, а их код и данные приходится подкачивать в рабочий
набор, на что расходуется оперативная память. Если в Windows XP или
Windows Vista в столбце CPU (ЦП) Procexp показывает значение «< 0.01»,
процесс вызывает переключение контекста в интервале системного таймера,
но загружает ЦП меньше, чем на 0,01% (с учетом округления).
Переключение контекста свидетельствует о том, что поток исполняется, но
не несет информации о времени его исполнения. Помимо переключений кон-
SIN_ch_03.indd 41
27.12.2011 14:14:20