Как запустить process monitor windows 10

при первом знакомстве с этой утилитой многие пользователи не сразу поймут, как же работать с программой Process Monitor, вкратце рассмотрим основные моменты

process-monitor-sysinternals-logoProcess Monitor – это фирменная утилита от Microsoft для ОС Windows, позволяющая в режиме реального времени отследить активность любой программы или приложения, установленного на компьютере. Грубо говоря, Process Monitor отвечает на вопросы: как узнать, что делает та или иная программа при установке, запуске, работе, удалении, какие записи вносит в системный реестр Windows, как используется интернет-соединение, и многие другие. Однако, при первом знакомстве с этой утилитой многие пользователи не сразу поймут, как же работать с программой Process Monitor, поэтому далее вкратце рассмотрим основные моменты.

process-monitor

И так, скачать последнюю версию Process Monitor вы можете с нашего сайта. Скачав, и запустив утилиту, в главном окне программы мы увидим примерно следующее.

process-monitor-sysinternals

Несмотря на отсутствие русского интерфейса Process Monitor, найти то что нужно, используя эту утилиту, не составит особого труда, а всё благодаря простой и интуитивно понятной системе фильтрации.

Далее рассмотрим работу программы (как работают фильтры в Process Monitor) на примере.

Допустим, что нам требуется узнать о том, что делает то или иное приложение на нашем компьютере, к примеру браузер Google Chrome.

Для начала нам необходимо знать имя исследуемого процесса, в нашем примере это chrome.exe. Дальше алгоритм действий следующий: используя контекстное меню программы (Filter) или сочетание клавиш (Ctrl+L) открываем Process Monitor Filter (окно на скриншоте ниже).

process-monitor-filter

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

В примере мы создадим свой собственный фильтр (по имени процесса) с целью найти и отследить только то, что касается браузера Google Chrome (файлы, записи в системном реестре, сетевая активность и т.д.).

В первом выпадающем списке выбираем «Process Name» (по умолчанию там «Architecture»).

process-monitor-process-name

Во втором случае оставляем «is», т.е. мы включаем значение в поиск, а далее выбираем сам процесс «chrome.exe», при условии, что браузер уже запущен (если мы ходим отследить, что делает та или иная программа до запуска, то название процесса в это поле необходимо вводить вручную).

process-monitor-chrome

В четвёртом поле также оставляем значение по умолчанию «Include» (это позволит отображать в общем потоке, только интересующий нас процесс). Для добавления фильтра нажимаем «Add».

process-monitor-push-ad

Нажимаем «Apply» и «OK».

process-monitor-apply-ok

И сразу же видим всю детальную информацию именно по процессу «chrome.exe»: ID процесса, потока, обращения к файлам, системному реестру Windows и т.д.

process-monitor-chrome-path

Нажав зелёную стрелочку в меню программы, можно сразу же перейти к месту расположения любого файла или ключа реестра из списка.

Если у вас имеются вопросы, или возникли проблемы в процессе работы с Process Monitor, то рекомендуем посетить официальный форум разработчика (Sysinternals), посвященный этой программе.

А вдруг и это будет интересно:

  • Как удалить папку Windows.old
  • SHAREit: передача файлов со смартфона на компьютер по Wi-Fi
  • Tab Freeze – оптимизация потребления оперативной памяти в Google Chrome
  • Исправляем ошибку запуска VMware в Windows 10: VMware Player and Device/Credential Guard are not compatible
  • Google Chrome блокирует загрузку файлов
  • Как отключить область уведомлений на панели задач в Windows 10

Дата: 2015-12-01 | Размещено в Статьи

Часто ли вы используете Диспетчер задач на своем ПК с Windows 10 для отслеживания различных процессов в вашей системе и того, сколько ЦП или памяти они используют? Если это так, вы можете обнаружить, что предпочитаете два альтернативных варианта — Process Monitor или Process Explorer.

Оба являются бесплатными инструментами, которые можно установить на ПК с Windows 10. Они включают ту же информацию, которую вы можете увидеть в диспетчере задач Windows, а также многое другое.

Process Monitor — это бесплатный расширенный инструмент мониторинга, включенный в набор утилит Windows Sysinternals. Он позволяет просматривать подробную информацию обо всех процессах, запущенных в вашей системе.

В частности, это подробности о событиях, запускаемых конкретными процессами.

Следующие поля информации о процессе выбираются по умолчанию при первом запуске приложения.

  • Имя процесса
  • Дорожка
  • Деталь
  • Результат
  • Операция
  • Время суток
  • Идентификатор процесса (PID)

Есть 20 дополнительных полей, которые вы можете выбрать, чтобы увидеть еще больше информации о каждом процессе.

Вы не ограничены только просмотром информации о процессе с помощью этого инструмента. Вы также можете установить фильтры для любого поля, чтобы ограничить отображаемые данные, регистрировать события процесса для устранения неполадок и создать дерево процессов, которое позволяет увидеть взаимосвязь между родительскими и дочерними процессами.

Что такое Process Explorer?

Process Explorer — лучший инструмент для понимания того, как различные приложения работают в вашей системе. Благодаря инновационной древовидной структуре он покажет вам, какие файлы, каталоги и другие процессы контролирует каждый родительский процесс.

Вы можете использовать Process Explorer в «режиме дескриптора», который помогает вам увидеть, какое окно обрабатывает каждый процесс, или в «режиме DLL», который показывает вам библиотеки DLL и отображенные в память файлы, открытые каждым процессом.

Это делает Process Explorer чрезвычайно полезным при устранении неполадок или отладке приложений, запущенных на вашем компьютере.

Теперь, когда вы знаете, для чего используется каждая из этих бесплатных утилит SysInternals, давайте подробнее рассмотрим, как вы можете использовать каждую из них на своем ПК с Windows 10.

Как использовать Process Monitor

После извлечения файлов Process Monitor вы увидите разные файлы для запуска утилиты. Если вы используете 64-разрядную систему Windows, выберите файл с именем Procmon64.exe. Если нет, выберите файл Procmon.exe.

Из главного окна монитора процессов вы можете запустить представление, подобное приложению Process Explorer. Это представление в виде дерева процессов. Чтобы просмотреть это, просто выберите небольшой значок документа с изображением древовидной диаграммы на нем.

Некоторая информация, которую вы можете увидеть в этом представлении, включает родительский процесс и все запущенные им процессы. Вы можете увидеть его команду запуска, разработчика приложения (если доступно), как долго оно работает и дату его запуска.

Он не так информативен, как Process Explorer, но позволяет быстро увидеть большую часть той же информации.

Создать фильтр монитора процессов

Вернувшись на главный экран (окно событий процессов), щелкните правой кнопкой мыши любой из процессов и выберите «Изменить фильтр», чтобы обновить фильтр процесса.

В этом окне показано, как работает фильтрация в Process Monitor. Первое раскрывающееся меню позволяет выбрать объект для фильтра. В данном случае это имя процесса. В следующем раскрывающемся списке указан оператор, например, есть, нет, меньше и т. Д. В этом поле вы можете ввести или выбрать фильтр, а также указать, хотите ли вы включить или исключить эти записи.

Когда вы выбираете «Добавить», он добавит этот новый фильтр в ваш список и соответствующим образом изменит общий вид процессов.

Чтобы создать новый фильтр, выберите меню «Фильтр» и выберите «Фильтр».

Откроется то же окно, но с пустым фильтром. Просто выберите каждое раскрывающееся меню, введите элемент фильтра, который вы хотите исключить или включить, и добавьте его в свой список фильтров.

После того, как вы нажмете ОК, он обновит ваше основное представление, чтобы включить новый фильтр.

Самая полезная функция Process Monitor — это регистрация системных событий во время некоторых действий. Вы можете регистрировать системные события следующим образом:

  1. Нажмите значок лупы «Захват», чтобы остановить запись.
  2. Выберите ластик на бумаге Значок «Очистить», чтобы очистить журнал.
  3. Снова нажмите значок захвата, чтобы начать запись.
  4. Выберите Фильтр и Включить расширенный вывод.
  5. Воссоздайте проблему.
  6. Еще раз щелкните значок «Захват», чтобы остановить запись.
  7. Выберите значок «Сохранить на диске», чтобы сохранить журнал на свой компьютер.

Вы можете просмотреть журнал, чтобы увидеть все события процесса, которые произошли, когда вы воссоздали проблему или ошибку, которую вы пытаетесь устранить.

Изучение глубже с помощью событий

Когда вы выбираете определенные события в Process Monitor, вы можете изучить более подробную информацию через меню Event.

Выберите событие, которое хотите изучить. Затем выберите меню «Событие» и выберите «Свойства».

Это показывает все свойства для события. Вкладка «Событие» показывает в основном то, что было в главном окне Process Monitor. На вкладке «Процесс» отображаются такие вещи, как путь к приложению и командная строка запуска, а также модули, используемые процессом. На вкладке «Стек» представлены модули, хранящиеся в памяти процессом, и их детали.

Вы можете получить доступ только к вкладке «Стек», выбрав вместо этого «Стек» в меню «События».

Если вы хотите внимательно следить за одним событием, выберите его, а затем выберите меню «Событие» и выберите «Переключить закладку».

Это выделит событие, чтобы его было легче отслеживать.

Вы также можете увидеть записи реестра для любого процесса, выбрав меню «Событие» и выбрав «Перейти к».

Это быстрый способ увидеть любые записи реестра, которые вы можете переключить для настройки этого приложения.

В правой части панели инструментов вы увидите пять значков, которые можно использовать для точной настройки фильтров по умолчанию.

Вы можете использовать их для включения или выключения каждого из следующих фильтров:

  • Регистрационная деятельность
  • Активность файловой системы
  • Сетевая активность
  • Активность процессов и потоков
  • Профилирование событий

Как использовать Process Explorer

Используйте тот же подход для 32-разрядной или 64-разрядной версии при запуске Process Explorer.

В меню «Просмотр» вы можете настроить отображение информации о процессе на каждой панели.

Используйте представление нижней панели, чтобы изменить отображаемые там данные с дескрипторов на библиотеки DLL.

Самое главное меню здесь — Процесс. Ниже приводится то, что показывает каждый пункт меню и позволяет вам управлять.

Set Affinity показывает, на каких процессорах может выполняться выбранный процесс. Вы можете включить или отключить любой из процессоров, если хотите.

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

Следующие четыре параметра позволяют управлять каждым процессом.

Они включают:

  • Kill Process: принудительная остановка отдельного процесса
  • Убить дерево процессов: принудительно остановить процесс и все дочерние процессы
  • Перезагрузить: остановить и запустить выбранный процесс.
  • Приостановить: подозревать выбранный процесс

Вы можете создать файлы дампа или мини-дампа, связанные с выбранным процессом, выбрав меню «Процесс» и выбрав «Создать дамп». Затем выберите, хотите ли вы минидамп или полный дамп.

Если вы выберете Проверить VirusTotal в меню Процесс, Process Explorer отправит хэши для файлов, связанных с процессом, и DLL на VirusTotal.com. VirusTotal просканирует и проанализирует их на предмет вирусной активности. Вам нужно будет согласиться с условиями обслуживания VirusTotal, прежде чем вы сможете использовать эту функцию.

Наконец, если вы выберете «Свойства» в меню «Процесс», вы сможете просмотреть широкий спектр свойств выбранного процесса.

Сюда входит информация, касающаяся производительности, использования графического процессора, общего количества потоков, сетевой активности и многого другого.

Что следует использовать: Process Monitor или Process Explorer?

Хотя эти две утилиты похожи, они не совпадают. Process Monitor лучше использовать, если вам нужно отслеживать, как ваши процессы взаимодействуют с вашей системой. Он позволяет отслеживать и регистрировать события, запускаемые каждым процессом.

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

Process Explorer, с другой стороны, сильно ориентирован на процессы. Это помогает вам увидеть отношения между родительскими и дочерними процессами. Он также позволяет вам глубже разбираться в параметрах и свойствах каждого процесса, гораздо больше, чем любая другая доступная утилита Windows.

Выберите нужную утилиту в зависимости от того, что конкретно вы устраняете.

Для диагностики причин медленной загрузки ОС Windows существует ряд довольно мощных утилит и методик анализа журналов событий, позволяющих выполнить детальную отладку всех этапов процесса загрузки системы и запуска служб (xperf/xbootmgr из Windows Performance Toolkit / Analyzer). Но их использование может вызвать ряд трудностей, особенно для начинающего системного администратора. В этой статье мы покажем, как с помощью Process Monitor можно довольно просто и быстро определить, какие программы, службы и драйвера долго выполняются при старте системы, увеличивая тем самым общее время загрузки для пользователя.

Безусловно, всем системным администраторам Windows, должна быть знакома утилита Process Monitor из комплекта системных утилит Sysinternals. Утилита Process Monitor позволяет в реальном времени отслеживать активность запущенных процессов, обращения к файловой системе и реестру. Одной из малоизвестной функцией Process Monitor является возможность включения режима мониторинга процессов запускаемых во время загрузки Windows.

Для диагностики этапа загрузки, Process Monitor создает отдельную службу в разделе реестра HKLMSYSTEMCurrentControlSetServices. Данная служба загружает драйвер режима загрузки procmon23.sys, стартующий после запуска Winload.exe, который протоколирует активность всех, процессов выполняющихся во время запуска системы и входа пользователя.

  1. Скачайте и распакуйте архив с Process Monitor (http://download.sysinternals.com/files/ProcessMonitor.zip)
  2. Запустите с правами администратора файл procmon.exe
  3. В меню Options выберите пункт Enable Boot LoggingEnable Boot Logging журналирование загрузки в Process Monitor
  4. В появившемся окне выберите опцию Generate thread profiling events -> Every second. В этом режиме драйвер procmon будет перехватывать состояние всех процессов каждую секундуenerate thread profiling events -> Every second
  5. Перезагрузите компьютер и дождитесь появления рабочего стола
  6. Драйвер procmon23.sys будет записывать все события до тех пор, пока пользователь не запустит утилиту Process Monitor . После этого режим протоколирования загрузки отключается.
  7. В окне Process Monitor соглашаемся с предложение сохранить собранные данные в файл.Сохранить журнал с акивностью при загрузки в файл

    Примечание. Если не остановить работу Process Monitor, то временный файл журнала %windir%procmon.pmb со временем займет все свободное место на системном диске.

  8. Выберите каталог, в котором нужно сохранить файл и дождётесь его сохранения. В моем случае в целевом каталоге появилось три файла Bootlog .pml, Bootlog-1.pml и Bootlog-2.pml общим размером 700 Мб.
  9. Щелкните по заголовку таблицы в окне ProcMon, выберите Select Columns и включите отображение столбца DurationДобавить столбец (Duration ) длительность в ProcMon
  10. Создадим новый фильтр в меню Filter.Фильтр событий в Process Monitor
  11. В качестве параметра фильтрации укажем Duration, условие more than и значение 10. Нажмите кнопку Add и ОК.Найти все события, которые длились более 10 секунд
  12. Таким образом, в списке процессов окажутся только те процессы, у которых на выполнение некоторых операций ушло больше 10 секунд (10 секунд я выбрал для большей наглядности примера).procmon bootlog
  13. Также для анализа процесса загрузки можно воспользоваться функцией в меню Tools ->Process Tree, позволяющей отобразить все процессы в виде графического дерева с информацией о начале, завершении и длительности процесса.Дерево процессов Process Monitor

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

Как правило, этот анализ поможет выявить «тормозящие» процессы, засевший в системе троян (в первую очередь нужно анализировать дочерние процессы Winlogon.exe), принять решение о необходимости удалить/обновить проблемное ПО или драйвер устройства, отключить некоторые службы или изменить тип их запуска (отложенный запуск или ручной по запросу), убрать программы из автозагрузки. Чаще всего в этом списке оказываются антивирусы и другое «тяжелое» ПО.

Серия уроков по пакету утилит SysInternals

1. Что такое инструменты SysInternals и как их использовать?

2. Знакомство с Process Explorer

3. Использование Process Explorer для устранения неполадок и диагностики

4. Понимание Process Monitor

5. Как пользоваться Process Monitor для устранения неполадок и нахождения скрытых ключей реестра

6. Использование Autoruns для работы с автоматически запускаемыми процессами и вредоносным ПО


В этом уроке мы собираемся научить вас, как утилита Process Monitor позволяет заглянуть под капот и увидеть, что ваши любимые приложения действительно делают за кулисами — к каким файлам они обращаются, какие ключи реестра меняют или считывают и многое другое.

В отличие от утилиты Process Explorer, с которой мы познакомились в предыдущих частях, Process Monitor предназначен для пассивного наблюдения за всем, что происходит на вашем компьютере, а не для активных действий, таких как завершение процессов или закрытие дескрипторов. Это похоже на просмотр глобального файла журнала для каждого отдельного события, которое происходит на вашем ПК с Windows.

Хотите понять, в каких разделах реестра ваше любимое приложение на самом деле хранит свои настройки? Хотите узнать, к каким файлам обращается служба и как часто? Хотите узнать, когда приложение подключается к сети или открывает новый процесс? На помощь приходит Process Monitor.

Если вы когда-нибудь задумывались, как какой-нибудь компьютерщик обнаружил секретный ключ реестра системы, который никто никогда раньше не знал, то, вероятно, это было сделано с помощью Process Monitor.

Утилита Process Monitor была создана путём объединения двух разных старых утилит, Filemon и Regmon, которые, как следует из их названий, использовались для мониторинга файлов и активности реестра. Хотя эти утилиты все ещё доступны, и хотя они могут соответствовать вашим конкретным потребностям, вам будет намного лучше с Process Monitor, потому что он может лучше обрабатывать большой объем событий из-за того, что он был разработан для этого.

Также стоит отметить, что Process Monitor всегда требует режима администратора, потому что под капотом он загружает драйвер ядра для захвата всех этих событий. В Windows Vista и более поздних версиях вам будет предложено диалоговое окно UAC, но для XP или 2003 вам нужно будет убедиться, что используемая вами учётная запись имеет права администратора.

Process Monitor собирает массу данных, но не всё, что происходит на вашем компьютере. Например, Process Monitor не заботится о том, перемещаете ли вы указатель мыши, и он не знает, оптимально ли работают ваши драйверы. Он не будет отслеживать, какие процессы открыты и расходуют ресурсы ЦП на вашем компьютере — в конце концов, это задача Process Explorer.

Что он делает, так это фиксирует определённые типы операций ввода-вывода, независимо от того, происходят ли они через файловую систему, реестр или даже сеть. Он также будет отслеживать несколько других событий в ограниченном режиме. Этот список охватывает события, которые он фиксирует:

  • Реестр — это может быть создание ключей, их чтение, удаление или запрос. Вы будете удивлены, насколько часто это происходит.
  • Файловая система — это может быть создание, запись, удаление файлов и т.д., и это может быть как для локальных жёстких дисков, так и для сетевых дисков.
  • Сеть — покажет источник и назначение TCP/UDP-трафика, но, к сожалению, не показывает данные, что делает его немного менее полезным.
  • Процесс — это события для процессов и потоков, в которых процесс запускается, поток запускается или завершается, и т. Д. Это может быть полезной информацией в определенных случаях, но часто это то, что вам нужно вместо этого просмотреть в Process Explorer.
  • Профилирование — эти события фиксируются Process Monitor для проверки количества процессорного времени, используемого каждым процессом, и использования памяти. Опять же, вы, вероятно, захотите использовать Process Explorer для отслеживания этих вещей большую часть времени, но здесь он пригодится, если вам это нужно.

Таким образом, Process Monitor может фиксировать любой тип операций ввода-вывода, независимо от того, происходит ли это через реестр, файловую систему или даже сеть, хотя фактические записываемые данные не фиксируются. Мы просто смотрим на тот факт, что процесс выполняет запись в один из этих потоков, чтобы позже мы могли больше узнать о том, что происходит.

Как запустить Process Monitor

Если вы скачали весь пакет SysInternals, то запустите файл Procmon64.exe или Procmon.exe — для 64-битных и 32-битных систем соответственно.

Как уже было сказано, у вас должны быть права администратора.

Интерфейс монитора процесса

Когда вы впервые загрузите интерфейс Process Monitor, вам будет представлено огромное количество строк данных, которые быстро прибывают, и это может быть ошеломляющим. Главное — иметь хоть какое-то представление о том, на что вы смотрите, а также о том, что ищете. За довольно короткое время там могут набраться миллионы строк.

Первое, что вам нужно сделать, это отфильтровать эти миллионы строк до гораздо меньшего подмножества данных, которое вы хотите видеть, и мы собираемся научить вас создавать фильтры и сосредоточиться на том, что вы хотите найти. Но сначала вы должны понять интерфейс и какие данные на самом деле доступны.

Столбцы Process Monitor

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

  • Time — Время — этот столбец не требует пояснений, он показывает точное время, когда произошло событие.
  • Process Name — Имя процесса — процесс, создавшый событие. По умолчанию здесь не отображается полный путь к файлу, но если вы наведёте курсор на поле, вы сможете точно увидеть, какой это был процесс.
  • PID — ИД процесса — идентификатор процесса, создавшего событие. Это очень полезно, если вы пытаетесь понять, какой процесс svchost.exe сгенерировал событие. Это также отличный способ изолировать один процесс для мониторинга, если он не запускается повторно.
  • Operation — Операция — это имя операции, которая регистрируется, и есть значок, который соответствует одному из типов событий (реестр, файл, сеть, процесс). Названия RegQueryKey или WriteFile могут немного сбить с толку, но мы постараемся помочь вам разобраться.
  • Path — Путь — это не путь процесса, это путь к тому, над чем работало это событие. Например, если произошло событие WriteFile, в этом поле будет отображаться имя файла или папки с которыми был обмен данных. Если бы это было событие реестра, он бы показал полный доступ к ключу.
  • Result — Результат — показывает результат операции, который имеет код SUCCESS (успех) или ACCESS DENIED (доступ запрещён). Хотя у вас может возникнуть соблазн интуитивно предположить, что BUFFER TOO SMALL (СЛИШКОМ МАЛЕНЬКИЙ БУФЕР) означает, что произошло что-то действительно плохое, в большинстве случаев это не так.
  • Detail — Подробности — дополнительная информация, которая часто не используется в обычном мире устранения неполадок.

Вы также можете добавить несколько дополнительных столбцов к отображению по умолчанию, выбрав Options → Select Columns. Это не является первостепенной необходимостью при знакомстве с программой, но, поскольку мы объясняем столбцы, об этом стоит упомянуть.

Одна из причин для добавления дополнительных столбцов к отображению заключается в том, что вы можете очень быстро отфильтровать эти события, не перегружаясь данными. Вот несколько дополнительных столбцов, которые мы используем, но в зависимости от ситуации вы можете найти применение и другим столбцам в списке.

  • Command Line — Строка команды — хотя вы можете дважды щёлкнуть любое событие, чтобы увидеть аргументы командной строки для процесса, который сгенерировал каждое событие, может быть полезно быстро просмотреть все параметры.
  • Company Name — Название компании — основная причина, по которой этот столбец полезен, заключается в том, что вы можете просто быстро исключить все события Microsoft и сузить свой мониторинг до всего остального, что не является частью Windows. (Вы должны убедиться, что у вас нет каких-либо странных процессов rundll32.exe, запущенных с помощью Process Explorer, поскольку они могут скрывать вредоносные программы).
  • Parent PID — Родительский PID — это может быть очень полезно при устранении неполадок в процессе, который содержит множество дочерних процессов, таких как веб-браузер или приложение, которое продолжает запускать отрывочные вещи как другой процесс. Затем вы можете отфильтровать по родительскому PID, чтобы убедиться, что вы захватываете их всех.

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

Изучение отдельного события

Просмотр объектов в списке — отличный способ быстро увидеть множество разных точек данных одновременно, но это определённо не самый простой способ изучить отдельный фрагмент данных, а в списке так много информации. К счастью, вы можете дважды щёлкнуть любое событие, чтобы получить доступ к сокровищнице дополнительной информации.

Вкладка Event («Событие») по умолчанию даёт вам информацию, которая во многом похожа на то, что вы видели в списке, но добавит немного больше информации о вечеринке. Если вы просматриваете событие файловой системы, вы сможете увидеть определённую информацию, такую как атрибуты, время создания файла, попытки доступа во время операции записи, количество записанных байтов и продолжительность.

Переключение на вкладку Process («Процесс») даёт вам много полезной информации о процессе, создавшем событие. Хотя обычно Process Explorer используется для работы с процессами, может быть очень полезно иметь много информации о конкретном процессе, который сгенерировал конкретное событие, особенно если это что-то, что произошло очень быстро, а затем исчезло из списка процессов. Таким образом и собираются данные.

Вкладка Stack («Стек») иногда бывает чрезвычайно нужной, но часто бывает совсем неполезной. Причина, по которой вам следует взглянуть на стек, заключается в том, что для устранения неполадок вы работаете со вкладкой Module («Модуль») на предмет чего-либо, что выглядит не совсем правильно.

В качестве примера представьте, что процесс постоянно пытается запросить или получить доступ к файлу, которого не существует, но вы не знаете почему. Вы можете просмотреть вкладку Stack и посмотреть, есть ли какие-либо модули, которые выглядят некорректно, а затем изучить их. Вы можете обнаружить, что проблема связана с устаревшим компонентом или даже вредоносным ПО.

Или вы можете обнаружить, что здесь нет ничего полезного для вас, и это тоже нормально. Есть много других данных, на которые стоит обратить внимание.

Замечания о переполнении буфера

Прежде чем мы продолжим, мы хотим отметить код результата, который вы будете часто видеть в списке, и, исходя из всех ваших знаний, вы можете немного испугаться. Поэтому, если вы начнёте видеть в списке BUFFER OVERFLOW (ПЕРЕПОЛНЕНИЕ БУФЕРА), не думайте, что кто-то пытается взломать ваш компьютер.

Переполнение буфера

Хотя да, многие хакеры и создатели вредоносных программ используют уязвимость переполнения буфера для удалённого или локального взлома компонента и получения дополнительного доступа, это сообщение об ошибке фактически встроено в Windows API и означает полную противоположность.

Примечание: представьте себе буфер, похожий на коробку шоколадных батончиков возле кассы в продуктовом магазине. Люди продолжают покупать их, и когда в коробке заканчивается, магазин снова наполняет её.

В идеале они не будут ждать, пока коробка опустеет, потому что это расстроит клиентов, и они также в идеале не будут бегать назад каждый раз, когда клиент покупает одну шоколадку, потому что это было бы пустой тратой время. Это буфер и предназначен для предотвращения задержек.

Сообщение BUFFER OVERFLOW в Windows API и, в частности, в Process Monitor, на самом деле означает, что клиентское приложение запросило данные, но не имело достаточно большой корзины для хранения всех данных. Таким образом, сервер отвечает, чтобы сообщить клиенту, что ему нужна большая корзина.

В примере для снимка экрана выше приложение запросило в реестре конкретное значение, но приказало Windows API поместить результат в место в памяти, которое было слишком маленьким для размещения всех этих данных. Таким образом, Windows вернула сообщение, чтобы приложение знало, что им нужно место побольше, чтобы разместить все данные. Вот и все.

Переход к пути к данным события

Вся эта информация действительно хороша, но никто не хочет исследовать, вручную просматривая каждое место в списке. К счастью, вы можете щёлкнуть правой кнопкой мыши поле Path («Путь») для элемента и использовать опцию Jump To («Перейти к»), чтобы быстро получить доступ к этим данным, чтобы увидеть, что они содержат, и попытаться выяснить, почему приложение вообще запрашивает эти данные.

Примечание. Вы также можете использовать функцию Search Online (поиск в Интернете), чтобы быстро найти имя процесса, путь в реестре или любое другое поле, что может быть действительно полезно, когда вы не понимаете, для чего что-то используется.

В приведённом выше примере вы можете видеть, что приложение, которое мы отслеживали, пыталось просмотреть значение реестра, поэтому мы использовали функцию Jump To, и Process Monitor сразу же открыл редактор реестра, в котором уже найден этот ключ.

Итак, теперь мы знаем, что приложение пытается выяснить, где находится моя папка appdata, и мы знаем, какая это была папка… что помогает объяснить, что происходит.

В данном случае приложение представляло собой поисковую вредоносную программу Conduit, которая искала мою пользовательскую папку, запрашивая регистрацию, чтобы начать возиться с файлами и папками в моем профиле Google Chrome.

Фильтрация данных, которые собирает Process Monitor

Как мы уже упоминали пару раз, фильтры, которые предоставляет Process Monitor, позволяют вам точно контролировать, какие события вы собираетесь захватывать, что значительно упрощает вам работу по выяснению того, что важно в списке. Если вы знаете, что вас не интересуют все события, генерируемые, например, explorer.exe, то было бы разумно просто отфильтровать их, удалив из списка.

Вы можете очень быстро выполнить фильтрацию по любому столбцу, используя контекстное меню и функции Include («Включить») или Exclude («Исключить») — если вы включите элемент, список будет содержать только события, соответствующие этому конкретному элементу или любым другим, которые вы специально включили, но не будут содержать что-нибудь ещё. Если вы исключите элемент, будет отображаться всё, кроме событий, которые соответствуют конкретному элементу, который вы исключили.

В этом случае мы решили включить процесс cltmng.exe, и теперь все, что мы видим в списке, связано с этим процессом.

Вы также можете использовать опцию Edit Filter («Редактировать фильтр») в меню или получить доступ к разделу Filters («Фильтры») меню, чтобы отобразить список фильтров и отредактировать их. Вы можете выбрать из раскрывающихся диалоговых окон и сопоставить по любому из доступных полей, выбрать, будет ли значение, которое вы вводите в поле, совпадать точно, или просто «начинается с», или ряд других параметров. Затем вы можете выбрать, включать или исключать события, соответствующие этим критериям.

Только не забудьте нажать кнопку Add («Добавить») после того, как вы определили фильтр, и прежде чем нажимать «ОК» или Apply («Применить»), потому что в противном случае ваш новый фильтр фактически не будет активирован. Поверьте, это частая ошибка!

Вы также можете удалить или отредактировать фильтры, выбрав их в списке, а затем изменив или удалив их.

Слишком много данных? Попробуйте удалить отфильтрованные события

Если вы точно знаете, что у вас правильные фильтры, чтобы смотреть только на то, что вы действительно хотите видеть, вы можете рассмотреть возможность использования функции Filter -> Drop Filtered Events (Отбросить отфильтрованные события).

На самом деле здесь происходит то, что экземпляр Process Monitor показывает только те элементы, которые соответствуют фильтру, но все остальное по-прежнему фиксируется в фоновом режиме, что может быть ТОННОЙ данных за очень короткое время — обратите внимание на строку состояния в приведённом ниже примере мы работали всего несколько минут. Если бы у нас была включена опция Drop Filtered Events («Отбрасывать отфильтрованные события»), она захватывала бы только те события, которые нам нужны.

Однако у использования этой функции есть большой недостаток: вы не сможете вернуть эти отфильтрованные события, если поняли, что отфильтровали список слишком сильно, и захотели изучить события из другого процесса. Вам придётся переделывать весь сценарий, что может быть слишком поздно. Поэтому используйте эту опцию с осторожностью.

Сохранение дампов для последующего анализа

И последнее, о чем мы поговорим сегодня, — это функция Open / Save («Открыть / Сохранить»), которую мы обычно не выделяем в других приложениях, но в данном случае это действительно важно.

Представьте, что вы работаете на чьём-то действительно старом и паршивом компьютере и хотите диагностировать конкретную проблему, но компьютер просто работает слишком медленно, чтобы сидеть на нем и все время заниматься этим. Вы можете просто запустить сканирование Process Monitor на их компьютере, сохранить данные на флэш-накопитель, а затем загрузить Process Monitor на свой невероятно быстрый персональный ноутбук и приступить к работе, анализируя, что могло произойти. Вы даже можете пойти в кофейню и проанализировать оттуда.

И, конечно же, вы также можете удалённо попросить запустить Process Monitor, выполнить сканирование, сохранить файл и отправить его вам для анализа. Таким образом вы можете сделать работу удалённо.

Следующий урок

В следующем уроке мы соберём воедино все полученные знания и покажем, как использовать Process Monitor в реальном мире для выполнения забавных и интересных вещей.

Связанные статьи:

  • Использование Process Explorer для устранения неполадок и диагностики (100%)
  • Как пользоваться Process Monitor для устранения неполадок и нахождения скрытых ключей реестра (100%)
  • Что такое инструменты SysInternals и как их использовать? (85%)
  • Знакомство с Process Explorer (85%)
  • Использование Autoruns для работы с автоматически запускаемыми процессами и вредоносным ПО (85%)
  • Как настроить очистку корзины по расписанию в Windows 10 (RANDOM — 50%)

Здравствуйте, расскажите, пожалуйста, как пользоваться программой для мониторинга процессов Process Monitor? Как в ней фильтровать процессы.

Илья.

Илья, прошрамма Process Monitor — позволяет отслеживать активность процессов Windows.

Общие сведения о программе Process Monitor .

    Process Monitor — программа от компании Sysinternals для наблюдения в реальном масштабе времени за действиями различных процессов в среде операционной системы Windows. После приобретения Sysinternals компанией Майкрософт, в разделе технической поддержки появился раздел Windows Sisinternals где можно найти описание и ссылки для скачивания большинства программных продуктов Sysinternals.

Утилита Process Monitor, включает в себя возможности программы мониторинга обращений к реестру Regmon и программы мониторинга обращений к файловой системе Filemon, и дополнительно, позволяет получать более подробную информацию о взаимодействии процессов, использовании ресурсов, сетевой активности и операциях ввода-вывода.
Авторы — Марк Руссинович (Mark Russinovich) и Брюс Когсуэлл (Bryce Cogswell)
Программа работает во всех версиях ОС Windows (проверено на Windows 2000 и старше), не требует инсталляции, однако должна выполняться под учетной записью с правами администратора. В архиве также присутствует файл документации на английском языке procmon.chm и текстовый файл с кратким описанием и лицензионным соглашением.
Для своей работы, Process Monitor устанавливает в системе собственный драйвер PROCMON20.SYS , с помощью которого выполняется перехват контролируемых монитором системных функций и сбор данных подлежащих мониторингу. Наблюдение выполняется для следующих классов операций — обращения к файловой системе (file system), обращение к реестру (Registry), работа с сетью (Network), и активность процессов (Process).
При первом запуске на экран будет выдано лицензионное соглашение, требующее подтверждения пользователя. Затем, после старта программы Process Monitor, выводится окно с фильтрами для исключения из процесса наблюдения событий стандартной активности системы и самого монитора.

Process Monitor от Sysinternals
Созданию фильтров будет посвящен отдельный раздел статьи, поэтому пока можно просто закрыть это окно и продолжить знакомство с программой.
    После запуска исполняемого файла procmon.exe начинается сбор, обработка и вывод данных об отслеживаемых событиях в основном окне программы:
Process Monitor от Sysinternals
Интерфейс программы состоит из 3-х частей — строка меню (menu bar), панель инструментов (toolbar) и область вывода данных в виде списка. Программа перехватывает отслеживаемые события, связанные с активностью процессов и выдает данные в соответствии с заданными критериями фильтрации и пользовательскими настройками отображаемых колонок. Для остановки мониторинга нужно щелкнуть мышкой по кнопке с лупой на панели инструментов, так, чтобы ее изображение стало перечеркнутым красной линией. Повторный щелчок вернет режим перехвата.
Каждому событию, перехваченному программой Process Monitor, соответствует одна строка в окне вывода данных. Двойной щелчок на отдельной строке вызовет окно просмотра свойств события (Event Properties). Порядок следования строк соответствует последовательности выполнения операций. Информация в окне вывода данных разделена на несколько столбцов, состав которых можно выбрать с помощью контекстного меню Select Columns, вызываемого правой кнопкой мышки на поле описания колонок или через главное меню — Options — Select Columns.
Выбор колонок в окне данных утилиты Process Monitor от Sysinternals
    Возможен вывод колонок, разбитых на 3 категории:
Application Details — сведения о процессе
Event Details — сведения о событии
Process Management — данные о родительском процессе, порождаемых потоках и контексте учетной записи безопасности исследуемого процесса.
Вывод всех колонок на экран неудобен, поэтому лучше ограничиться их минимально необходимым количеством, а более детализированную информацию получать двойным щелчком на строке отображаемого события.
В последних версиях Process Monitor при первом запуске выводятся колонки, наиболее подходящие для быстрого анализа информации и дающие представление о том, какой процесс, какую операцию выполнил, и с каким результатом.:
Sequence — номер строки (порядок следования события по времени) с начала сессии перехвата отслеживаемых событий.
Process Name — имя процесса, вызвавшего событие.
Operation — выполняемая операция. Значение зависит от типа обращения и представляет собой краткое описание, как , например, открытие ключа реестра RegOpenKey или отправка TCP пакета TCP Send
Path — путь, связанный с используемым ресурсом. Это может быть файл, ключ реестра, данные TCP соединения и т.п.
Result — результат выполнения запроса:
END OF FILE — обнаружен признак конца файла (EOF)
NAME NOT FOUND — файл, каталог или данные реестра не найдены
NAME COLLISION — была попытка создать новый файл, но файл с таким именем уже существует.
FILE LOCKED -файл открыт для монопольного доступа.
SUCCESS — операция выполнена успешно.
INVALID DEVICE REQUEST — неверный запрос к устройству.
FAST I/O DISALLOWED — операция ввода/вывода с использованием устаревшего запроса к драйверу запрещена (интерфейс «fast I/O» в большинстве современных драйверов не поддерживается и заменен на интерфейс IRP — I/o Request Packet — пакет запроса на ввод/вывод).
Detail — дополнительная информация о событии, описывающая тип запроса, права доступа, свойства файла или каталога, тип данных, значение ключа реестра и т.п.

Панель Инструментов Process Monitor от Sysinternals
    Панель инструментов позволяет быстро выполнить наиболее необходимые и часто используемые в практической работе с программой, действия. Кнопки панели инструментов выполнены в стиле, характерном для большинства программных продуктов Sysinternals и, в основном, имеют схожее предназначение.
Кнопки панели инструментов Process Monitor от SysinternalsOpen — открыть ранее сохраненные данные мониторинга. Комбинация клавиш Ctrl+O
Кнопки панели инструментов Process Monitor от SysinternalsSave — сохранить текущие данные мониторинга в файл. Имеется возможность сохранить все события (All Events), события, отфильтрованные текущими фильтрами (Events displayed using current filter) или события выделенные подсветкой (Highlighted events). Можно также использовать различный формат сохраняемых данных — обычный формат утилиты Process Monitor (PML), файл с разделителями (CSV), файл в формате XML.. Комбинация клавиш Ctrl+S
Кнопки панели инструментов Process Monitor от SysinternalsCapture — Включение / выключение режима перехвата событий. Если значок лупы перечеркнут — мониторинг активности процессов остановлен. Комбинация клавиш Ctrl+E
Кнопки панели инструментов Process Monitor от SysinternalsAutoscroll — Включение / выключение режима автоматической прокрутки экрана данных. При включении, в окне данных будут отображаться последние по времени выполнения операции. Если значок перечеркнут — прокрутка не будет выполняться. Комбинация клавиш Ctrl+E
Кнопки панели инструментов Process Monitor от SysinternalsClear — очистить текущие данные перехвата событий активности процессов. Комбинация клавиш Ctrl+X
Кнопки панели инструментов Process Monitor от SysinternalsFilter — вызвать окно настройки фильтров. Комбинация клавиш Ctrl+L
Кнопки панели инструментов Process Monitor от SysinternalsHighlight — вызвать окно настройки подсвечиваемых событий. Комбинация клавиш Ctrl+H
Кнопки панели инструментов Process Monitor от SysinternalsInclude Process From Window — Позволяет включить в мониторинг процесс, связанный с определенным окном. Для выбора окна нужно нажать левую кнопку мышки на значке мишени и (не отпуская кнопку) переместить указатель на нужное окно.
Кнопки панели инструментов Process Monitor от SysinternalsShow Process Tree — отобразить окно с деревом процессов. Информация отображается в виде иерархической структуры, отображающей зависимости между родительскими и порожденными процессами. Процессы, имеющие одного и того же родителя, отображаются в порядке, соответствующем времени запуска. Так, например, процесс wininit.exe c идентификатором ( PID ) равным 364 запустил services.exe с идентификатором 420, который, в свою очередь породил несколько процессов svchost.exe и т.д.
Дерево процессов, отображаеое Process Monitor
При отображении дерева процессов для каждого из них выводится информация с именем, описанием, путем исполняемого файла, владельцем, командной строкой запуска и временем старта. При установке указателя мыши на строку конкретного процесса, в нижней части окна будет выведена подробная информация о нем.
Кнопки панели инструментов Process Monitor от SysinternalsFind — стандартный диалог поиска строки Windows . Комбинация клавиш Ctrl+F
Кнопки панели инструментов Process Monitor от SysinternalsJump To Object — Стандартная для многих приложений от Sysinternals возможность быстрого перехода к исследуемому объекту — ключу или разделу в редакторе реестра, папке или файлу в проводнике Windows. Комбинация клавиш Ctrl+J
Следующая группа кнопок панели инструментов задает тип отображаемых событий (класс событий). Если кнопка «утоплена» — события данного типа будут отображаться:
Кнопки панели инструментов Process Monitor от SysinternalsShow Registry Activity — отображать информацию об обращениях к реестру Windows
Кнопки панели инструментов Process Monitor от SysinternalsShow File System Activity — отображать информацию об обращениях к файловой системе Windows
Кнопки панели инструментов Process Monitor от SysinternalsShow Network Activity — отображать информацию о сетевой активности процессов
Кнопки панели инструментов Process Monitor от SysinternalsShow Process and Thread Activity — отображать информацию об активности процессов, связанной с загрузкой библиотек, созданием и завершением других процессов или потоков.
Кнопки панели инструментов Process Monitor от SysinternalsShow Process and Thread Activity — отображать информацию об активности процессов, связанной с загрузкой библиотек, созданием и завершением других процессов или потоков.
Кнопки панели инструментов Process Monitor от SysinternalsShow Profiling Events — Отображать события класса Profiling. Применяется для определения степени использования центрального процессора (CPU) отдельными процессами и их компонентами.
Open CTRL+O — открыть из файла ранее сохраненный отчет и просмотреть его
Save CTRL+S — сохранить содержимое окна в файл отчета .
Backing Files CTRL+B — файл для записи информации о событиях. По умолчанию, используется файл подкачки (pagefile.sys).
Capture Events CTRL+E — Включить/выключить режим перехвата событий.
Export Configuratuion — экспорт конфигурации. Позволяет сохранить текущие настройки Process Monitor в специальном файле конфигурации (.PMC)
Import Configuration — загрузить настройки Process Monitor из сохраненного файла конфигурации.
Пункты основного меню

Edit
Copy CTRL-C — скопировать в буфер обмена выделенные строки.
Find CTRL+F — поиск строки с заданным текстом.

Auto Scroll CTRL+A — автоматическая прокрутка в окне отображения событий.
Clear Display CTRL+X — очистить список перехваченных данных. Удаляются все строки, записанные с момента начала перехвата.
Пункты основного меню

Event
Properties CTRL-P — отобразить свойства выбранного события.
Отображается окно свойств события Event Properties
Свойства события
Вкладка Event содержит подробную информацию о событии — время, класс события, выполняемая операция, результат и некоторые данные, зависящие от типа выполняемой операции.
Вкладка Process позволяет просмотреть подробную информацию о процессе — имя, версию, путь исполняемого файла, параметры командной строки, PID самого процесса и PID его родителя, список загруженных библиотек.
Вкладка Stack — информация о вызовах функций модулей ядра (помечены буквой K) и модулей среды пользователя (помечены буквой U).
Jump to CTRL+J — быстрый переход к просмотру источника события.
Search Online — поиск в Интернет информации, связанной с описанием события..
Include — добавление в список отслеживаемых событий по имени процесса, пути исполняемого файла, параметров командной строки и т.д.
Exclude — исключение из списка отслеживаемых событий по имени процесса, пути исполняемого файла, параметров командной строки и т.д.
Highlight — выделение из списка отслеживаемых событий по имени процесса, пути исполняемого файла, параметров командной строки и т.д.
Последние три пункта меню позволяют быстро сформировать фильтры для обработки данных Process Monitor.
Пункты основного меню Filter
Enable Advanced Output — расширенный вывод данных события. Касается, в основном, представления информации о выполненной операции.
Filter CTRL+L — вызов окна настройки фильтров.
Reset Filter CTRL+R — сброс текущих настроек фильтров.
Load Filter — загрузить ранее созданный фильтр.
Save Filter — сохранить текущий фильтр.
Organize Filter — удалить, переименовать, экспортировать или импортировать фильтр.
Highlight CTRL+H — вызов окна настройки выделения (подсвечивания) событий.
Пункты основного меню Tools
System Details — показать информацию о системе — имя компьютера, операционную систему, корневой каталог ОС, количество процессоров (CPU), объем оперативной памяти, разрядность 32/64 бит..
Process Tree CTRL+T — вывести дерево процессов.
Process Activity Summary — суммарные данные активности процессов. По каждому процессу выдается суммарная таблица количества операций ввода-вывода, обращений к файлам и реестру, степени использования процессора.
File Summary — суммарные данные использования файловой системы. С помощью выбора вкладок можно получить статистику по использованию путей, каталогов, файлов с определенными расширениями.
Registry Summary — суммарные данные по обращениям к реестру Windows. Общее количество обращений, количество операций открытия, закрытия, чтения, записи. Статистика обращений к различным разделам и ключам.
Stack Summary — суммарные данные по использованию функций Windows.
Network Summary — суммарные данные по использованию сети Число установлений соединений, число разрывов, число передач и приемов, количество принятых и переданных байт, сетевые пути.
Cross Reference Summary — суммарные данные по совместному использованию ресурсов Windows разными процессами. Информация о файлах, в которые одни процессы выполняют запись, а другие — чтение.
Count Occurrences — можно получить суммарные данные по выбранным колонкам. Название колонки нужно выбрать в поле Column и нажать кнопку Count В поле данных будет выведена статистическая информация об использовании различных значений выбранной колонки.
Пункты основного меню Options
Always on Top — всегда отображать окно программы Process Monitor поверх всех остальных окон.
Font — выбор шрифта для окна
Highlight Colors — выбор цвета для фона и текста записей, выбранных в качестве подсвечиваемых.Позволяет задать цвет текста (кнопка FG) и цвет фона (кнопка BG) для выделяемых подсветкой событий
Configure Symbols — конфигурирование источника для определения имен функций. .
History Depth — Позволяет задать степень использования виртуальной памяти (количество запоминаемых в течении сессии записей — от 1 до 199 миллионов). В случае, когда монитор процессов работает длительное время, часть записей о событиях может быть отброшена, но в любом случае наиболее часто регистрируемая активность будет сохранена.
Profiling Events — интервал перехвата состояния выполняющихся процессов.
Enable Boot Logging — установить режим мониторинга процессов во время загрузки ОС.
Show Resolved Network Addresses CTRL+N — установить режим отображения сетевых имен вместо IP-адресов.
 

Установка фильтров программы Process Monitor .

    Process Monitor запоминает последний используемый набор фильтров и применяет его при следующем запуске программы. Задать условия фильтрации можно сразу после старта утилиты или вызвав окно настройки фильтров ( Process Monitor Filters ) в любой момент времени с использованием меню программы или комбинации клавиш CTRL+L. Кроме непосредственного создания правил фильтрации вручную, возможно использование кнопок панели инструментов и контекстного меню, вызываемого правой кнопкой мышки.
Контекстное меню Process Monitor
Меню позволяет выполнять действия фильтров Include, Exclude и Highlight с использованием данных выбранного события. Так, например, выбор пункта меню Exclude «PTStartmon.exe» приведет к созданию правила фильтра для исключения из наблюдения процесса с именем PTStartmon.exe. Выбор Highlight — выпадающее меню — Result вызовет подсвечивание всех записей, в поле результата выполнения отслеживаемой операции которых, будет такое же значение, как и в текущем событии.
Exclude и Category — исключить из выходных данных события, категория которых совпадает с категорией выбранной записи.
Обычно, используется исключение операций, путей и процессов, информация о которых не нужна в выходных данных.
    Создание фильтров вручную позволяет получать более гибкие правила, основанные на использовании логических выражений.
Критерии фильтров Process Monitor
Запись правила фильтрации состоит из 4-х колонок:
Column — колонка (содержимое поля описания события) записи события. Можно выбрать одно из возможных полей отображаемого в окне данных программы события.
Relation — логическое выражение. Is — равно, принимает значение
Is not — не равно
Less then — меньше чем
More then — больше чем
Begin with — начинается с
Ends with — заканчивается на
Contains — содержит
Excludes — не содержит
Value — значение. Зависит от свойств выбранного поля в первой колонке (Columns)
Action — действие. Exclude — исключить событие, соответствующее условиям данного фильтра. Include — включить событие, соответствующее условиям данного фильтра.
Выпадающие меню позволяют выбрать элемент события (признак по которому будет срабатывать правило фильтрации), логическую операцию над ним и действие, выполняемое при удовлетворении условий фильтрации. Например, для того, чтобы не отслеживались события, связанные с процессами компании Microsoft, можно создать следующее правило:
Column (колонка) — выбираем значение Company
Relation (выражение — можно выбрать is (равно) или, более универсально — contain (содержит)
Value (значение) — выбираем Microsoft Corporation
Action (действие) — выбираем Exclude — исключить.
В итоге, получаем правило — «не отображать события, в поле имени компании которых присутствует значение Microsoft Corporation».
Необходимо учитывать, что Procces Monitor, при завершении работы, запоминает последний активный фильтр и при следующем запуске применяет его в качестве текущего. Для сброса фильтра используется комбинация клавиш CTRL+R.

Практика применения утилиты Process Monitor .

    Одно из основных применений Process Monitor — определение причин аварийного завершения приложений в случае отсутствия или неверного расположения файлов, каталогов, разделов и ключей реестра. Иногда программа используется для исследования работы конкретного приложения, например для определения местонахождения настроек обозревателя Mozilla Firefox.
    При исследовании поведения конкретного приложения, желательно создать такие условия фильтрации, чтобы не отображалась лишняя информация и не потерялась нужная. Как правило, настройки приложений хранятся либо в реестре, либо в файле, поэтому, нужно отсеять отображение событий, не связанных с данным приложением (имя процесса не равно firefox.exe) и нужным видом активности Event Class (исключить события сетевой активности Network и класса Profiling и включить события классов Registry и File System).
После настройки фильтра, желательно очистить активный буфер (CTRL+X) и вызвать выполнение исследуемого события — т.е. перейти в окно Firefox.exe, изменить и сохранить какую-либо из настроек. После чего нужно вернуться в окно Process Monitor, остановить процесс перехвата событий и приступить к анализу полученных данных.
Конечно, в случае сложной программы, количество операций обращения к реестру и файловой системе может исчисляться сотнями или даже тысячами, и в подобных случаях, придется разбираться исходя из здравого смысла и возможной логики работы приложения. Так, наиболее вероятно, что
— настройки любого приложения не могут храниться во временных файлах, поэтому их можно сразу исключить из анализа.
— настройки обозревателя Firefox индивидуальны для каждого пользователя, и следовательно, связаны с его профилем ( каталог C:documents And Settingsпользователь для Win2k/XP, C:UsersПользователь для Windows Vista/7) и раздел реестра HKEY CURRENT USER (HKCU) )
— можно также выделить тот факт, что сохранение настроек — это операция записи.
В результате таких предположений, круг поиска будет значительно сужен и процесс анализа событий станет проще.
В качестве ответа для задачи поиска места хранения настроек Firefox — пользовательские настройки хранятся не в реестре, а файле с именем prefs.js. Анализ содержимого файла подтверждает предположение, что это именно настройки. В первых строках содержится текст:
Из перевода становится понятно, что настройки, внесенные вручную в данный файл, при запущенном обозревателе, не будут сохранены, поскольку будут перезаписаны при его завершении. И для ручного изменения настроек следует в адресной строке Mozilla Firefox набрать about:config . За дополнительной информацией предлагается перейти по ссылке на сайт mozilla.org.
А также, понятно, что для сохранения текущих настроек обозревателя, можно скопировать содержимое файла prefs.js в файл с другим именем и при необходимости, в любой момент, восстановить их из сохраненной копии.
Возможности Process Monitor позволяют также получать суммарные показатели использования ресурсов системы (меню Tools — : Summary)
Пример отображения суммарных показателей использования файловой системы (меню Tools — File Summary):

Статистика активности ввода/вывода
При необходимости получения данных о статистике использования отдельных каталогов можно перейти на вкладку By Folder
Статистика активности ввода/вывода
При необходимости получения статистики использования файлов по расширениям нужно перейти на вкладку By Extensions
Статистика активности ввода/вывода
Пример отображения суммарных показателей использования реестра (меню Tools — Registry Summary):

Статистика обращений к реестру
Отображается статистика
Total — общее число обращений к реестру
Opens — число выполнений операций открытия
Closes — число выполнений операций закрытия
Reads — число выполнений операций чтения
Writes — число выполнений операций записи
Others — число выполнений других операций
Paths — Путь раздела или ключа реестра

Пример отображения суммарных показателей активности процессов (меню Tools — Process Summary):

Статистика активности процессов
Отображается информация о количестве событий отдельных категорий — обращений к реестру, обращений к файловой системе, сетевой активности и т.п.
Пример отображения суммарных показателей использования различных вызовов (меню Tools — Stack Summary):

Статистика вызовов  функций.
Позволяет получить данные об использовании различными процессами пользовательских функций и функций ядра. По сути, позволяет определить наиболее используемые процессами в период мониторинга библиотеки, службы, драйверы. Нажатие кнопки Go to Event позволяет перейти к событию, связанному с текущим вызовом в окне вывода данных Process Monitor.
    Еще одна очень полезная возможность утилиты Process Monitor — получить журнал активности процессов в ходе загрузки операционной системы.
Для этого выбираете меню Options — Enable Boot Logging. Программа выдаст сообщение, что Procmon сконфигурирован для записи событий мониторинга в процессе следующей перезагрузки системы:
Process Explorer - включение  мониторинга в процессе загрузки Windows.
В данном окне можно также включить режим периодического перехвата состояния всех процессов (Profiling) с интервалом в 1 секунду или 100 миллисекунд.
Режим записи информации в журнал мониторинга начнется в ходе загрузки Windows с момента запуска драйвера программы ( PROCMON20.SYS ) и будет продолжаться до тех пор, пока утилита Process Monitor не будет запущена вновь вошедшим в систему пользователем. Данный режим выполняется только для одной перезагрузки системы.
После нового запуска Process Monitor, пользователь получит сообщение о том, что имеется журнал с данными мониторинга активности в процессе загрузки Windows, созданный предыдущим экземпляром программы и запрос на сохранение собранных данных.
Process Explorer - завершение   мониторинга в процессе загрузки Windows.
После ответа «Да» файл отчета будет сохранен, и можно приступать к анализу полученной информации.
Необходимо учитывать тот факт, что процесс записи данных мониторинга продолжается после завершения загрузки системы и регистрации пользователя, и если не выполнить запуск Process Monitor, то файл журнала ( C:Windowsprocmon.pmb ) будет продолжать расти в размере и, в конце концов, может вызвать переполнение диска.

источник: http://ab57.ru/procmon.html

Можем смоделировать Вашу сеть на виртуальном стенде

Помните, что все действия вы выполняете на свой страх и риск и загрузка неверных данных может повлечь за собой крах системы и потерю информации.
Тестирование в тестовой среде никто не отменяет.
Администрация сайта не несет ответственность за ваши действия.

Вся информация на сайте носит исключительно справочный характер и не является публичной офертой, определяемой в Статье 437 Гражданского кодекса Российской Федерации.

По программе Process Monitor дано уже довольно-таки много материала, да и изучение основ функционирования утилиты всегда было доступно даже для неподготовленного пользователя. Но все же, я лично не совсем понимал многие аспекты работы (а некоторые не понимаю до сих пор :), поэтому и решил набросать очередную заметку по поводу данной, весьма полезной утилиты, дабы впоследствии можно было использовать статью как своего рода подсказку. Если рассматривать любую операционную систему с точки зрения обобщения, то можно условно дифференцировать её на блоки кода/данных, которые взаимодействуют между собой на основе определенных закономерностей. Чтобы приблизиться к привычным нам терминам, будем считать упомянутый блок процессом, объединяющим в себе и код и данные, предназначающимся для решения определенной задачи. Таким образом, взаимодействие между подобными процессами и составляет (за некоторым исключением) понятие функционирования операционной системы. Во время работы операционной системы, в ней выполняется большое количество процессов и назначение любого из этих процессов может варьироваться в достаточно широком диапазоне.

Каждый процесс в операционной системе совокупностью собственных операций и результатов их выполнения, фактически определяет отпечаток активности системы в тот или иной момент времени. Но, как мы знаем из теории, сами процессы являются лишь контейнерами для потоков (нитей), которые непосредственно и делают всю вычислительную работу. Понятно, что потоки представляют собой код, набор машинных команд, исполняемых процессором, но это на достаточно низкоуровневом восприятии. Если же оперировать структурами Windows, то потоки все так же содержат машинный код, однако весь функционал операционной системы доступен через обращение к функциям различных системных библиотек и вызовы драйверов, поэтому потоки, помимо простых арифметико-логических операций, взаимодействуют с различными подсистемами Windows: виртуальной памятью, файловой системой, реестром, аппаратными компонентами и многими другими. Межпроцессное взаимодействие настолько интенсивно, что в каждый момент времени в системе выполняются тысячи подобных операций. Соответственно, в реалиях Windows нам было бы интересно наблюдать взаимодействие процессов именно с определенными компонентами операционной системы на уровне функций и результатов их исполнения, поскольку именно такой уровень активности вполне достаточен для решения большинства задач. Подобная информация была бы нам крайне полезна и с точки зрения чисто исследовательского интереса к изучению алгоритмов, и с точки зрения поиска решения тех или иных проблем, возникающих в процессе работы. Но нам потребуется инструмент, который в состоянии предоставить столь подробную информацию, ведь нам необходимо погрузиться в межпроцессное взаимодействие значительно глубже уровня встроенного инструментария, понять, что конкретно делают процессы. Что-то подобное нам предоставляет средство под называнием Process Monitor, принадлежащее к классу инструментов с расширенной функциональностью, и будет темой нашей сегодняшней статьи.
Process Monitor — программа мониторинга активности процессов в операционной системе, которая в режиме протоколирования операций позволяет отслеживать активность процессов по отношению к таким подсистемам ОС как файловая система, реестр, сеть. Позволяет оценивать количество процессорного времени, расходуемого для выполнения потоков в рамках процессов.
Process Monitor выполняется наблюдение в реальном времени для следующих классов событий:

  • Файловая система: создание(открытие)/закрытие/чтение/запись/удаление элементов файловой системы: файлов, каталогов, атрибутов, содержимого.
  • Реестр: создание/чтение/запись/перечисление/удаление элементов реестра: ветвей, ключей, значений.
  • Сеть: установка соединения, передача данных, закрытие соединения. Информация об источнике/приемнике TCP/UDP трафика. Общая информация о протоколах, пакетах. Сами передаваемые данные не записываются.
  • Процесс/поток: Создание процесса, создание потока внутри процесса, завершение потока/процесса. детальная информация о процессе (путь, командная строка, ID пользователя/сессии), запуск/завершение, загрузка образов (библиотеки/драйвера), стек выполнения.
  • Профилирование: Специальный класс событий, записываемых с целью отслеживания количества процессорного времени, затрачиваемого каждым процессом. Использование памяти процесса.

На ум сразу приходят основные, наиболее вероятные сценарии применения Process Monitor:

  • В каких именно ключах реестра та или иная программа хранит свои установки?
  • Какие операции совершает процесс при старте, в процессе функционирования и на этапе закрытия?
  • Кому принадлежат те или иные файлы? Как часто владелец к ним обращается?
  • Какой процесс обращается к внешним узлам сети?
  • Какой процесс тормозит загрузку операционной системы?

Process Monitor позволяет получить ответ на вопрос: какие действия выполняет тот или иной процесс в системе.

Но, в отличии от таких инструментов, как Process Exploer, это не утилита реального времени, позволяющая на ходу взаимодействовать с процессами, закрывать хендлы, убивать процессы и производить другие подобные действия, это скорее глобальный журнал, состоящий из событий, происходящих в операционной системе. Ключевым словом в предыдущем предложении было «подробный», потому как имеются в виду не те события, которые мы привыкли видеть, к примеру, в Журнале событий, а более низкоуровневые, происходящие на заданного набора функций API некоторых компонентов ОС. Эти, как и некоторые другие, уникальные особенности функционала делают программу Process Monitor практически незаменимым инструментом для устранения неполадок и выяснения причин подозрительной активности в системе.
Но не спешите очаровываться, ибо на каждую бочку меда всегда припасена своя ложка дегтя. Так и в случае с Process Monitor имеются некоторые «нюансы». Не стоит рассматривать Process Monitor в качестве эдакой волшебной палочки-выручалочки на все случаи жизни, поскольку «видит» он далеко не все. К примеру, он не отследит перемещение указателя мыши, перетаскивание окон, не покажет содержимое пакетов сетевого трафика, не покажет все многообразие вызываемых программой функций, и это далеко не полный перечень тех вещей, которых Process Monitor делать не умеет. Как и в любом деле диагностирования проблем операционной системы, подобный инструментарий предоставляет, грубо говоря, ограниченный набор функций и операций потока, оставляя поле для деятельности и требуя от специалиста самостоятельных выводов и порой достаточно глубоких знаний, которые и составляют основу любого анализа. Я не берусь утверждать, что абсолютно все диагностируемые с помощью Process Monitor проблемы требуют высокого уровня знания архитектуры ОС, но это не такое уж и редкое явление. Пример из дикой природы: как-то раз попался баг с Outlook 2010, когда в свойствах программы outlook.exe были выставлены опции совместимости, которые препятствовали запуску программы со стартовой ошибкой «Невозможно открыть почтовые папки, используемые по умолчанию. Не удается открыть банк сообщений». Отследить данную проблему при помощи утилиты Process Monitor можно, но надо знать, что именно искать в огромном стоге сообщений от процесса Outlook. Для того случая надо было искать флаги WINSRV08SP1 и RUNASADMIN при считывании ключа AppCompatFlags, что уже само по себе говорит о том, что порой надо представлять что мы хотим найти. В идеале (а идеал недостижим), неплохо бы представлять себе, как именно меняется профиль загружаемой в режиме совместимости программы на уровне генерируемых событий по отношению к типовой загрузке приложения. В конечном итоге надо было понять, почему именно почтовому клиенту не удалось загрузить конфигурацию пользователя. Конечно, возможно именно этот пример не такой уж и показательный, потому как достаточно сложен, и было бы разумнее использовать другие средства, просто я хочу обратить внимание на то, что Process Monitor это не отладчик, и он не может отловить место вызова функции отображения окна с ошибкой, не сможет проникнуть в логику работы той или иной внутренней функции, не покажет состояние регистров, областей памяти и прочих важных для процесса структур. Иногда нет видимого результата об отсутствии доступа, поэтому иногда собираемая информация неявно содержит описание проблемы и над полученными результатами, выдаваемыми Process Monitor, надо еще поразмышлять. Изредка и вовсе наблюдаются случаи, когда функциональных возможностей Process Monitor’а просто не хватает чтобы докопаться до сущности проблемы, но это никак не умоляет достоинств данного инструмента, поскольку в большинстве случаев он довольно быстро позволяет добраться до причины бага. Ну не будете же Вы по каждой ошибке сразу браться за отладчик и тратить часы на пролет в попытке изучить алгоритм работы сбойного модуля? .. хотя :)
Утилита Process Monitor включает в себя возможности более ранних программ Sysinternals: программы отслеживания обращений к реестру Regmon и программы отслеживания обращений к файловой системе Filemon, давно уже сошедших со сцены. В дополнение ко всему Process Monitor может сохранять весь журнал событий в файл весом до 1 гигабайта.

Как это работает

В процессе наблюдения за активностью Process Monitor была выявлена интересная особенность, оказывается программа использует собственный драйвер режима ядра (а как же подпись? а подпись от Symantec). В 32-разрядной системе Process Monitor использует 32-битный драйвер-фильтр под названием procmon23.sys как в процессе работы непосредственно исполняемого образа, так и на этапе загрузки операционной системы (при включении опции Enable Boot Logging). Но ведь кроме самого исполняемого образа procmon.exe в рабочей директории приложения нет никаких других бинарных файлов? Дело в том, что драйвер упакован в тело главного исполняемого модуля procmon.exe. При помощи любого средства работы с ресурсами PE-файлов можно удостовериться в том, что драйвер procmon23.sys содержится внутри исполняемого файла в ресурсе RCDRIVERNT директории BINRES секции ресурсов, то есть является частью основного файла:

Драйвер Process Monitor

В 64-разрядной системе Process Monitor при запуске распаковывает во временную директорию %TEMP% скрытый файл с именем Procmon64.exe. Образ procmon64.exe содержится в ресурсе 1308 директории BINRES внутри ресурсной секции основного файла procmon.exe. А вот уже в самом Procmon64.exe, в секции BINRES ресурсной секции содержится 64-битный драйвер, который используется в процессе работы.

Драйвер procmon23.sys может работать и как драйвер режима загрузки. Когда пользователь активирует опцию Enable Boot Logging, Process Monitor копирует драйвер в папку %SystemRoot%System32Drivers и прописывает его в разделе реестра HKLMSYSTEMCurrentControlSetServices со значением параметра Start = 0, что говорит о том, что драйвер будет загружен на стадии выполнения Winload.exe при загрузке операционной системы.

Похоже, через этот драйвер-фильтр проходят все события, отслеживаемые Process Monitor. В дополнение к этому, Process Monitor использует технологию Трассировки событий (ETW, Event Tracing for Windows), как минимум для наблюдения за событиями сетевой активности. Не совсем пока ясно, тот же драйвер используется в качестве контроллера и получателя для ETW или же сам исполняемый модуль? Напомню, что ETW это своеобразная расширяемая система журналирования, встроенная в систему Windows, реализованная на уровне ядра и позволяющая (по запросу) собирать события от приложений пользовательского режима и модулей режима ядра. А как мы знаем, практически во все компоненты операционной системы включена возможность отслеживания выполняемых операций. Понятное дело, что функционал ETW значительно шире, он предоставляет обширнейшую информацию по функционированию: переключение контекста, статистика по прерываниям, отложенные вызовы процедур (DPC), процедуры обработки прерываний (ISR), создание и уничтожение процессов и потоков, дисковый ввод-вывод, ошибки страниц, переходы процессора между режимами в рабочем состоянии (p-state), операции с реестром, и многое другое.

Интерфейс

Перед запуском неплохо было бы получить исполняемый модуль утилиты. Скачать Process Monitor можно отсюда. Утилита распространяется в виде портабельного приложения и не требует инсталляции, а просто может быть извлечена из архивного файла в произвольную директорию, что крайне полезно при диагностировании с переносных носителей и при интегрировании в среду предустановки (WinPE).

Поскольку Process Monitor использует собственный драйвер, для запуска ей требуются права локального администратора.

В случае запуска Process Monitor с установленными в предыдущих сеансах работы фильтрами, программа открывает окно настройки фильтров (Filter). Делается это для того, чтобы пользователь смог, при желании, модифицировать фильтры перед началом процедуры сбора данных.
Интерфейс программы Process Monitor чрезвычайно прост и по умолчанию выглядит следующим образом:

Окно Process Monitor

Согласитесь, всё гениальное действительно просто. Простота интерфейса обуславливает интуитивность восприятия происходящего в системе. Непосредственно после запуска Process Monitor сразу же начинает захватывать события, происходящие в операционной системе, производится мониторинг основных компонентов, таких как: файловая система, реестр, сеть, активность процессов/потоков. После захвата события, не попавшие под фильтр, выводятся в хронологическом порядке в главное окно приложения. Причем пользователь наблюдает такое огромное количество данных, которое просто по первости может запросто обескуражить, вся эта тонна данных мгновенно переполняет основное окно программы и устремляется за её пределы, о чем красноречиво говорит стремительно уменьшающийся боковой ползунок прокрутки. Каждая выводимая таким образом строка представляет собой событие, произошедшее в системе, видимое и захваченное драйвером Process Monitor и не попавшее под правила фильтрации. Основной массив информации отформатирован в виде таблицы, соответственно каждая строка поделена на некоторое количество столбцов, состав и расположение которых может быть изменен через настройки программы. В конфигурации по-умолчанию используются следующие столбцы:

Столбец Наименование Обозначение
1 Time of Day Время возникновения события. Отображается в долях секунд в формате ЧЧ:ММ:СС,ССССССС с точностью в семь десятичных знаков после запятой. Точность выводимого временного значения зависит от точности используемого в компьютере аппаратного таймера (8254/RTC/HPET).
2 Process Name Имя процесса. Колонка отображает имя процесса, который выполнил операцию. Выводится только лишь имя процесса, однако если вы наведете курсор мыши на интересующее имя, дополнительно отобразиться и полный путь к модулю. В колонке отображается иконка (значок) приложения, запакованная в ресурсной секции бинарного файла.
3 PID Идентификатор процесса. Довольно полезный параметр, особенно для «комплексных» процессов, таких как svchost.exe.
4 Operation Операция. Имя зафиксированной низкоуровневой операции, производимой процессом по отношению к целевому объекту. Обычно данное имя соответствует имени функции, которая вызывается для выполнения операции. Дополнительно отображается иконка класса события (регистр, файл, сеть, процесс).
5 Path Путь к целевому объекту, по отношению к которому процесс выполняет операцию. Не путайте с путем к процессу (модулю). Выводится только в том случае, если путь применим к объекту. Возможные значения:

  • Путь файловой системы, начинающийся с буквы диска;
  • Путь к ветви/ключу реестра;
  • Сетевой путь (исходные и целевые адреса и порты);
  • Сетевой путь (в формате UNC);
6 Result Результат операции. Возвращаемый функцией результат операции, обозначающий степень успешности того или иного действия. Более подробно описан в отдельной таблице, приведенной ниже.
7 Detail Развернутая информация о деталях произошедшего события. Как то: Запрашиваемый уровень доступа, размер данных, тип данных, размер пакета сетевого ввода-вывода, коды атрибутов файлов.

Поле результата операции (Result) является одним из ключевых и требует дополнительного пояснения:

Результат Результат Описание
SUCCESS УСПЕХ Операция завершена успешно.
ACCESS DENIED ОТКАЗАНО В ДОСТУПЕ Операция не выполнена. Дескриптор защиты объекта не предоставляет процессу необходимые права доступа к объекту.
SHARING VIOLATION НАРУШЕНИЕ СОВМЕСТНОГО ДОСТУПА К ФАЙЛУ Операция не выполнена. Объект уже кем-то открыт и не поддерживает режим совместного использования.
NAME COLLISION КОНФЛИКТ ИМЕН Процесс пытался создать уже существующий объект.
NAME NOT FOUND ИМЯ НЕ НАЙДЕНО Попытка открытия несуществующего объекта: объект не найден. Не смотря на «громкую» формулировку, в большинстве случаев не представляет интереса при поиске проблем. Дело в том, что данный результат довольно часто является результатом штатных операций. Типичным примером может служить проверка существования файла или ключа реестра по определенному пути. После возврата подобного результата, код, выполнявший проверку, просто пойдет по другому логическому ветвлению. Поэтому: Данный результат может использоваться, а может и не использоваться для поиска проблем.
PATH NOT FOUND ПУТЬ НЕ НАЙДЕН Попытка открытия несуществующего объекта: путь не найден. То же самое, что и предыдущий. Данный результат может использоваться для поиска проблем с оговорками.
NO SUCH FILE ФАЙЛ НЕ СУЩЕСТВУЕТ Попытка открытия несуществующего объекта или группы объектов. Иногда возвращается при запросе группы объектов по маске, например *.exe указывает на все файлы с расширением .exe в запрашиваемой директории. Если ни одного файла, подпадающего под установленную маску не найдено, то возвращается подобный результат.
NAME INVALID НЕПРАВИЛЬНОЕ ИМЯ Процесс запросил объект с неправильным именем. Вероятно возникает, когда имя запрашиваемого объекта имеет неправильный формат, содержит недопустимые символы, в общем, является недопустимым.
NO MORE ENTRIES ЗАПИСИ ОТСУТСТВУЮТ Процесс завершил перечисление содержимого раздела реестра. Обычно говорит о фактическом окончании данного процесса, указывает на то, что больше записей нет.
NO MORE FILES ФАЙЛЫ ОТСУТСТВУЮТ Возникает при запросе перечисления объектов в каталоге файловой системы. Обычно говорит о фактическом окончании данного процесса, указывает не то, что больше файлов нет.
END OF FILE КОНЕЦ ФАЙЛА Достигнут конец файла. Процесс достиг конца файла в одной из своих операций (например: чтение из файла).
BUFFER TOO SMALL БУФЕР СЛИШКОМ МАЛ Недостаточный объем буфера. Выделенный буфер слишком мал для завершения данной операции, требуется выделить буфер большего объема. Исключительно информативный статус, информирует функцию процесса о том, что заданный во входных параметрах функции буфер мал и следует его увеличить. В большинстве случаев не рассматривается как ключевая информация при анализе сбоев.
BUFFER OVERFLOW ПЕРЕПОЛНЕНИЕ БУФЕРА Буфер переполнен. Выделенный приложением буфер слишком мал для размещения запрашиваемых данных. Вызываемая функция сообщает вызывающей функции, что необходимо выделить буфер большего объема. Исключительно информативный статус, информирует функцию процесса о том, что следует увеличить буфер. В большинстве случаев не рассматривается как ключевая информация при анализе сбоев, но все еще продолжает пугать пользователей необоснованными подозрениями во взломе и прочей вредоносной активности :).
REPARSE ПОВТОРНАЯ ОБРАБОТКА Процесс запросил объект, ссылающийся на другой объект. Обычно возвращается при обнаружении ссылки.
NOT REPARSE POINT НЕТ ПОВТОРНОЙ ОБРАБОТКИ Запрашиваемый объект не ссылается на другой объект. Обычно возникает как ответ на передачу управляющего кода FSCTL_GET_REPARSE_POINT к драйверу файловой системы.
FAST IO DISALLOWED БЫСТРЫЙ ВВОД-ВЫВОД ЗАПРЕЩЕН Механизм FAST I/O не доступен для запрашиваемого объекта, то есть запрос ввода/вывода с использованием механизма FAST I/O к драйверу не поддерживается. В большинстве случаев не рассматривается как ключевая информация при анализе сбоев.
FILE LOCKED WITH ONLY READERS ФАЙЛ ДОСТУПЕН ТОЛЬКО ДЛЯ ЧТЕНИЯ Файл или проекция файла заблокирована. Файл доступен только для чтения. Диспетчер памяти обращается к файловой системе для захвата блокировки на время создания секции файла в памяти в процессе проецирования. Другими словами этот результат говорит о блокировке записи в файл на время создания секции файла и сейчас никто не имеет доступ на запись для данного файла. Таким образом диспетчер памяти может контролировать неизменность данных на время блокировки. Результат должен рассматриваться как информативный.
FILE LOCKED WITH WRITERS ФАЙЛ ДОСТУПЕН ДЛЯ ЗАПИСИ Файл или проекция файла заблокирована. Как минимум один пользователь может записывать в него данные.
IS DIRECTORY ОБЪЕКТ ЯВЛЯЕТСЯ КАТАЛОГОМ Запрашиваемый объект является каталогом (директорией).
INVALID DEVICE REQUEST НЕДОПУСТИМЫЙ ЗАПРОС К УСТРОЙСТВУ Данный запрос не является допустимым для целевого устройства.
INVALID PARAMETER НЕВЕРНЫЙ ПАРАМЕТР Службе или функции был передан неверный параметр.
NOT GRANTED НЕ ПРЕДОСТАВЛЕНО Запрашиваемая блокировка файла не может быть предоставлена из-за наличия других блокировок.
CANCELLED ОТМЕНЕНО Запрос ввода-вывода был отменен. Например, часто возвращается на вызов NotifyChangeDirectory при проверке каталога файловой системы на наличие изменений.
BAD NETWORK PATH СЕТЕВОЙ ПУТЬ НЕ НАЙДЕН Не найден сетевой путь.
BAD NETWORK NAME СЕТЕВОЕ ИМЯ НЕ НАЙДЕНО Указанное сетевое имя не обнаружено на удаленном хосте.
MEDIA WRITE PROTECTED НОСИТЕЛЬ ЗАЩИЩЕН ОТ ЗАПИСИ Запись на носитель не может быть произведена. Носитель защищен от записи.
KEY DELETED РАЗДЕЛ УДАЛЕН Попытка операции с разделом реестра, который был помечен для удаления.
NOT IMPLEMENTED НЕ РЕАЛИЗОВАНО Запрашиваемая операция не выполнена, так как не реализована в целевом объекте.
NO EAS ON FILE НЕТ РАСШИРЕННЫХ АТРИБУТОВ Больше расширенных атрибутов не найдено. Ошибка возникает в случае, когда пытаются запросить расширенные атрибуты у объекта, которых их не имеет.
OPLOCK NOT GRANTED УСТУПАЮЩАЯ БЛОКИРОВКА НЕ ПРЕДОСТАВЛЕНА Отказ в предоставлении уступающей блокировки. Уступающая блокировка (oplock, opportunistic lock) это блокировка, которая позволяет (сетевому) клиенту блокировать файл, расположенный на сервере, и локально (на стороне клиента) кешировать данные из файла, при этом исключая изменение файла другими клиентами. Уступающая блокировка связана с механизмом автономных файлов, позволяет снизить сетевой трафик и улучшить время ответа от сервера. Статус OPLOCK NOT GRANTED является ответом на передачу управляющего кода FSCTL_REQUEST_OPLOCK к драйверу файловой системы. Используется для диагностики проблемных объектов, криво работающих с сетевыми ресурсами.

* — цветом я попытался отметить те результаты, которые могут являться значимыми для поиска проблем, но всё достаточно условно и присутствие некоторых результатов может не указывать на ошибку, все требуется рассматривать в контексте происходящего и окружающих событий.
Вновь фиксируемые события добавляются в конец списка событий в хронологическом порядке, и, соответственно, если событий много, то они мгновенно выходят за границы активного окна. Таким образом, при базовых настройках интерфейса информация в окне остается статической и отражает только события, захваченные первыми, последние события пишутся в конец списка и об изменении общей его длины говорит лишь изменяющийся размер бокового курсора прокрутки. Однако подобное поведение программы можно изменить, включив автопрокрутку (Autoscroll) списка событий через включение соответствующей опции, либо посредством нажатия сочетания клавиш Ctrl+A. В этом случае список событий будет непрерывно скроллироваться вверх, показывая поступающие последними системные события в реальном режиме времени.

Панель инструментов

Поясним назначение кнопок, размещенных на панели инструментов интерфейса утилиты Process Monitor:

Панель Process Monitor

Слева направо:

  • Open — Загрузка сохраненных ранее событий (трассировок);
  • Save — Сохранение всех захваченных событий (трассировок);
  • Capture — Включение/Отключение захвата событий;
  • Autoscroll — Автопрокрутка событий в главном экране;
  • Clear — Очистка главного окна и всех захваченных событий;
  • Filter — Настройка фильтрации и подсветки событий;
  • Highlight — Настройка подсветки событий;
  • Include Process From Window — Настройка фильтрации событий по определенному окну на рабочем столе. Позволяет навести мишень на выбранное окно, Process Monitor сам определит принадлежность окна процессу и включить фильтрацию по данному процессу;
  • Show Process Tree — Дерево процессов;
  • Find — Поиск событий по заданным критериям;
  • Jump To Object — Переход к разделу реестра или файлу. Process Monitor анализирует содержимое столбца Path выделенной строки, запускает проводник/редактор реестра и открывает соответствующий элемент дерева;
  • Show Registry Activity — Переключатель состояния отображения событий активности реестра среди всех событий системы;
  • Show File System Activity — Переключатель состояния отображения событий активности файловой системы среди всех событий системы;
  • Show Network Activity — Переключатель состояния отображения событий активности сети среди всех событий системы;
  • Show Process and Thread Activity — Переключатель состояния отображения событий активности процессов/потоков среди всех событий системы;
  • Show Profiling Events — Переключатель состояния отображения событий профилирования среди всех событий системы. Профайлинг – события, записываемые утилитой Process Monitor для вычисления количества процессорного времени и объема памяти, используемого каждым процессом.

Горячие клавиши

Комбинация Описание
Ctrl+E активация/останов записи событий.
Ctrl+X очистка журнала захваченных событий.
Ctrl+A включение/отключение автопрокрутки событий.
Ctrl+F поиск события среди всех захваченных событий.
Ctrl+C копирование выделенного события в виде строки текста с разделителями.
Ctrl+J перейти к выделенному объекту.
Ctrl+L открытие окна настройки фильтров.
Ctrl+R сброс фильтра в настройки по умолчанию.
Ctrl+H открытие окна подсветки.
Ctrl+T открытие дерева процессов.

Фильтрация событий

Как уже отмечалось, количество событий, происходящих (генерируемых различными компонентами) в системе, довольно велико. Число событий, которые «видит» Process Monitor меньше, но не намного. Возникает резонный вопрос, а все ли события нам необходимы? Ответ очевиден. Большинство событий, которые отображаются в главном окне программы совершенно излишни в контексте тех или иных узкоспециализированных пользовательских задач. Ну не нужно пользователю видеть события загрузки образа внезапно стартовавшей программы обновления, в то время как он занят изучением ключей реестра, хранящих конфигурацию интересующей его программы. Именно с целью скрыть ненужные события, у Process Monitor имеются гибкие и мощные средства фильтрации. Фильтр позволяет скрывать лишние события, тем самым ограничивая количество отображаемых элементов и сужая область поиска проблемы.

Фильтрацией можно скрыть событие, то есть выключить его отображение. Однако записываться будут все события, и Вы можете в любой момент посмотреть отфильтрованные (скрытые) события отключением (сбросом) фильтра.

Поскольку фильтрация является одним из ключевых элементов Procmon, возможности её в данной программе очень хорошо проработаны. Фильтровать события можно используя любые доступные программе атрибуты событий. Отфильтровывать события в Process Monitor можно несколькими способами:

Фильтрация по классу

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

Класс process monitor

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

Меню Filter

Какие бы из типов фильтров не применялись в Process Monitor, все они доступны через меню Filter и подпункт Filter. Это полный (общий) набор параметров фильтрации и представлен он в следующем виде:

Process Monitor фильтрация

Это же окно настроек фильтров может быть быстро вызвано и другими способами: нажатием комбинации клавиш Ctrl+L либо кликом по кнопке Filter на панели инструментов. Окно настроек фильтра предоставляет пользователю достаточно богатые возможности по маскированию событий системы. Окно Process Monitor Filter разделено условно на две части: в верхней представлены элементы интерфейса для добавления фильтра, в нижней присутствует список уже примененных к стандартному выводу фильтров. Фильтр добавляется методом прохода слева направо по всем атрибутам, которые, в свою очередь, представлены ниспадающими списками. Некоторые атрибуты между собой связаны, то есть выбор атрибута из одного списка может повлечь за собой автоматическое выставление значения в других списках. В некоторых полях можно производить редактирование значения. После завершения формирования, для добавления фильтра необходимо нажать кнопку Add, она производит добавление новых параметров фильтрации к фильтрам, представленным в нижней области окна.
Для редактирования правил выбранного фильтра, просто щелкните дважды по соответствующей строке, описывающей фильтр, в нижней части окна. Тем самым Вы переместите параметры в верхнюю часть (заполнятся соответствующие условия), где сможете их отредактировать и повторным нажатием кнопки Add завершить редактирование фильтра, вновь переместив его в нижнюю часть окна, к списку активных фильтров. Удалить фильтр можно кнопкой Remove. После окончания редактирования фильтров их можно ввести в действие (активировать) нажатием кнопки OK или Apply. Для восстановления настроек фильтров по умолчанию, в начальное состояние, которое присутствовало при первом запуске программы, нажмите кнопку Reset.
Как Вы могли заметить, по умолчанию в списке предопределенных фильтров имеется набор правил типа Exclude (Исключить). Эти правила служат для маскирования событий, которые, по мнению авторов, являются событиями активности тех компонентов операционной системы, которые, в большинстве сценариев, не несут полезной информации для устранения неполадок приложений. Здесь можно встретить исключения для: процессов утилит Procmon (Process Monitor), Procexp (Process Explorer), Autoruns, системных процессов, низкоуровневых запросов ввода-вывода драйверов Windows IRP_MJ, низкоуровневых операций FAST_IO, событий трассировки, событий файла подкачки pagefile.sys, событий работы диспетчера NTFS с метаданными.

Быстрый фильтр

Можно применить так называемый «быстрый фильтр» для некоторых параметров событий, отображаемых в главном окне. Активируется он нажатием правой кнопки мыши на событии в главном окне программы:

Быстрый фильтр procmon

В открывшемся контекстном меню Вы можете видеть сразу несколько различных способов фильтрации. В зависимости от того, на значение какого столбца в строке была нажата правая клавиша мыши, мы можем исключать или включать из всего массива вывода события, у которых имеется совпадение по значению столбца. Выполняется это выбором соответствующего пункта, начинающегося с Include … (Включить) и Exclude … (Исключить). В контекстном меню присутствуют так же пункты Edit Filter …, Exclude Events Before, Exclude Events After.

Фильтрация по владельцу окна

В дополнение к основным вариантам фильтрации, в утилите Procmon имеется возможность отфильтровать события по описателю (идентификатору) окна приложения. Это достаточно удобная функциональная особенность, поскольку она предоставляет пользователю возможность посмотреть события процесса, окно которого появляется на рабочем столе. Для задействования данного функционала на панели инструментов найдите значок прицела:

Process Monitor перекрестие

Перетащите его на интересующее Вас окно и Procmon создаст соответствующий фильтр на процесс, являющееся владельцем выбранного окна, соответственно изменив вывод в главном окне.

Подсветка событий

В дополнение к фильтрам, в Procmon присутствует возможность маркировать события, выделяя их цветом. Тогда как фильтрация скрывает лишние события из вывода, то подсветка просто-напросто выделяет необходимые события в списке. Напрямую, вроде как, не относится к фильтрам, поскольку не скрывает события, а всего-лишь маркирует их другим цветом в списке. Вызвать окно настройки подсветки Process Monitor можно либо нажатием комбинации клавиш Ctrl+H или щелчком по соответствующему значку на панели задач. Выглядит оно следующим образом:

Procmon подсветка событий

Как Вы видите, оно идентично окну настройки фильтров, за исключением того, что по умолчанию не имеет никаких установок, то есть подсветка полностью отключена. Алгоритм настройки параметров подсветки и выборки результатов окна Highlighting во многом схожи с аналогичными в окне Filter.

Поиск по событиям

Фильтрация результатов это превосходно! Фильтр позволяет нам гибко манипулировать выборкой из общего потока событий, однако, в большинстве случаев достаточно сложно сформировать условия, при которых диапазон отфильтровываемых событий сужался бы до какого-то приемлемого минимума. Результатов все-равно бывает много, да и в области отфильтрованных строк иногда требуется найти внезапно обнаруженную константу. Иногда бывает полезным найти какое-либо ключевое слово во всем объеме захваченной информации без понимания, в каком именно столбце оно может располагаться, поэтому создание фильтра оказывается проблематичным. Эти и многие другие рабочие моменты говорят в пользу использования традиционного, хорошо знакомого всем с детства поиска. Вызывается окно поиска комбинацией клавиш Ctrl+F или проходом по меню Edit — Find:

Process Monitor Поиск

Будет отображено уже знакомое по другим продуктам Microsoft окно поиска. Поиск осуществляется по значениям всех без исключения полей вывода главного окна Process Monitor и при обнаружении первого попавшегося совпадения, утилита пролистывает экран до найденного значения и маркирует целиком всю строку с обнаруженным ключевым фрагментом синим цветом.

Детали событий

Process Monitor получает от различных компонентов операционной системы достаточно большое количество дополнительной информации. Все они отображаются в столбце Detail. Большинство из них чисто информативные, поэтому обычно пропускаются при анализе. Тут можно встретить запрашиваемый уровень доступа для операции, подробности запросов функций, дополнительные параметры некоторых функций, имена пакетов драйверов и прочее

Изучение события

Вся информация, коллекционируемая утилитой Process Monitor в процессе записи событий, представляется в виде огромной таблицы, каждая строка которой отражает лишь обобщенное описание определенного произошедшего события. Ну и что, как Вы думаете, достаточно ли этой информации, представленной в главном экране утилиты в виде ограниченных сведений, разнесенных на несколько колонок? Иногда да, но зачастую и нет! Надо отдать должное авторам Process Monitor’a за то, что они предусмотрели логику более детального исследования записываемых событий. Давайте выполним двойной щелчок на строке события, и посмотрим что же произойдет? После выполнения двойного щелчка открывается отдельное окно, имеющее следующий вид:

procmon single event

Во вкладке Event (Событие), мы видим общую информацию об интересующем нас событии. В общем то, именно эта вкладка не представляет для исследователя большой ценности, поскольку содержит информацию, которую можно получить в интерфейсе утилиты другими способами. Но вот две оставшиеся вкладки окна определенно могут нас заинтересовать. Средняя вкладка называется Process (Процесс) и выглядит следующим образом:

procmon process tab

Тут мы видим путь к модулю (Path), командную строку, с использованием которой был запущен модуль (Command Line), пользователя, с привилегиями которого процесс был запущен (User), идентификатор сессии входа в систему (Auth ID), в которой процесс, хозяин операции, выполняется, и уровень целостности (Integrity), присвоенный процессу, хозяину операции, при запуске. Отдельного внимания удостаивается информационное окно со списком библиотек, загруженных в адресное пространство процесса (Modules), которое сильно способствует выявлять непрошенных гостей в виде различного рода вредоносов. Но для продвинутых исследователей настоящей ценностью является последняя, самая правая вкладка Stack (Стек), которая позволяет увидеть стек вызовов основного потока процесса:

procmon stack tab

Как мы видим, в этой вкладке можно обнаружить хорошо знакомую нам по отладчику WinDbg, классическую цепочку вызовов функций, называемую стеком вызовов. Во-первых, она позволяет отследить последовательность вызовов функций с момента начала выполнения стартовой функции потока. Во-вторых, по последовательности вызовов функций можно определить к каким модулям (библиотекам) эти функции принадлежат, тем самым выявив и системные компоненты, которые либо требуют обновления, либо вообще не должны применяться в данном модуле (например: вирусы).

Сценарии использования

Некоторые замечания по статусам программы Process Monitor:

  • Событие, в поле операции которого стоит Load Image (Загрузка образа) помогает при диагностике проблем запуска программы. Если программа по каким то причинам не запускается, то ищем в общем списке событие с операцией Load Image и смотрим списки DLL, которые загружаются (описаны своими событиями) непосредственно за событием загрузки образа. Если вспомнить алгоритм загрузки образа, то мы поймем, что обычно за операцией Load Image следуют события поиска необходимых DLL библиотек. Дело в том, что загрузчик Windows готовит адресное пространство процесса, проецируя в него все необходимые программе библиотеки и производя неявное связывание на начальном этапе. Если в какой то из необходимых основной программе библиотек DLL произошла ошибка загрузки её образа, то очевидно, что загрузчик Windows не сможет запустить и основную программу. Событие загрузки образа фиксируется со статусом «отказано в доступе» (ACCESS DENIED);
  • Статусы, на которые стоит обращать внимание в первую очередь: ACCESS DENIED, SHARING VIOLATION, NAME NOT FOUND (с последним имеются исключения). Статус NAME NOT FOUND в большинстве случаев достаточно типовой статус завершения, не стоит так уж прям преувеличивать его значимость и считать виновником всех бед. Зачастую статус высвечивается в случае, когда приложение проверяет наличие файла или ключа реестра (содержащих конфигурацию программы), и по результатам этой проверки выполняет тот или иной код, то есть производит логическое ветвление в зависимости от результата запроса. Программа может и не найти ключ реестра, содержащий собственную конфигурации, и в таких случаях мы увидим все тот же статус NAME NOT FOUND. Одним словом, статус NAME NOT FOUND должен рассматриваться в контексте приведшего к нему события.
  • Для определения виновника чрезмерной нагрузки на дисковую подсистему: запускаем Procmon, создаем фильтр с настройками Pathbegin withC: (хотя тут может быть указан любой интересующий логический диск) и нажимаем OK. Затем, после непродолжительного сбора данных (~одна минута) идем в меню Tools и выбираем пункт Process Activity Summary. В открывшемся окне сортируем по колонке File Events и получаем в вверху списка имена процессов, активно работающих с файловой системой. Затем, чтобы узнать какие именно файлы участвуют в интенсивном обмене данными, можно выбрать меню Tools и пункт File Summary, и в открывшемся окне наблюдать список файлов, задействованных в дисковых операциях. Вывод автоматически сортируется по колонке Total Events, поэтому в верхней части списка мы наблюдаем наиболее интенсивно используемые в операциях дискового ввода-вывода файлы.

Диагностика этапа загрузки

Довольно часто встречаются ситуации, когда проблемы у операционной системы начинаются задолго до прорисовки интерфейса пользователя, уже на этапах загрузки. Для диагностирования подобных сбоев в сети имеется некоторое количество специализированного инструментария, такого например, как xbootmgr/xperf. Удачно вписывается в этот ряд и утилита Process Monitor. Procmon записывает события всех исполняющихся на стадиях загрузки процессов, с помощью драйвера этапа загрузки под названием procmon23.sys (имя может меняться от версии к версии), который был описан в начале статьи. К сожалению, драйвер стартует на этапе работы модуля Winload.exe, что препятствует фиксированию более раннего этапа Bootmgr, однако, в большинстве случаев, на эту мелочь можно закрыть глаза. Включение логирования процесса загрузки активируется через опцию Enable Boot Logging меню Options.

Procmon этапа загрузки

В дополнение к активации механизма, Procmon предлагает включить профилирование потоков через равные промежутки времени. Это немаловажно, потому что в большинстве случаев проблемы загрузки связаны с медленной работой определенных процессов. Именно с целью отследить подобные «тормозящие» процессы включается профилирование, которое позволяет создавать эдакие снимки активности потоков внутри процесса (стек вызовов и прочие данные) через равные промежутки времени. В итоге, записываемая информация помогает понять на какие именно операции поток тратит процессорное время.
После включения опции Enable Boot Logging можно перезагружать операционную систему. После завершения загрузки запускаем утилиту Process Monitor для сохранения лог-файлов процесса загрузки и видим следующее диалоговое окно:

Process monitor bootlog

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

Объем информации, записываемой драйвером Process Monitor на стадиях загрузки, для «средненабитой» :) операционной системы Windows 7 SP1 x64, достаточно велик. Типичный размер со включенным профилированием потоков может превышать 1500 мегабайт.

После сохранения лог-файлов активности этапа загрузки, впоследствии можно будет проанализировать их, открыв в программе Process Monitor либо двойным щелчком по .pml-файлу, либо открыв его непосредственно через меню FileOpen. Тем не менее тут есть один нюанс, если файл или набор файлов журнала процесса загрузки слишком большой, и утилита не может найти достаточного пространства в файле подкачки либо виртуальном пространстве процесса для создания буфера, то выдается ошибка «Unable to open Bootlog.pml for reading .. «. Я лично решил её временным включением файла подкачки, который у меня, традиционно, отключен вообще.

Как выявить причины медленной загрузки Windows с помощью Process Monitor

При снижении скорости загрузки Windows традиционно рекомендуется выполнить очистку системы от временных файлов и отключить с помощью программ-оптимизаторов неиспользуемые службы, однако все эти способы далеко не всегда оказываются результативными. Как показывает практика, удаление временных данных и очистка реестра совершенно бесполезны, использование же оптимизаторов также не оказывает должного эффекта, так как заложенные в них алгоритмы действуют по шаблону, нередко отключая совсем не те компоненты, которые следовало бы отключить.

Конечно, есть специальные утилиты, позволяющие точно определить причины медленной загрузки, но их использование может вызвать трудности не только у рядовых пользователей, но и у начинающих системных администраторов. Есть и средний путь — определить, приложения, драйвера и службы которые тормозят загрузки Windows, можно с помощью бесплатной утилиты Process Monitor. Позволяя точно выявить причины медленной загрузки системы, она к тому же отличается сравнительной простотой использования.

Process Monitor — утилита многофункциональная, но в данном примере нас интересует одна функция — мониторинг запускаемых во время загрузки Windows процессов. Работает она следующим образом: в ключе реестра HKLMSYSTEMCurrentControlSetServices создается специальная служба, загружающая драйвер procmon23.sys, который отслеживает запуск всех процессов, стартующих после запуска основного файла загрузки Winload.exe. Данные записываются в лог и выводятся в окне утилиты в графическом виде, позволяя легко определить, загрузка какого компонента занимает больше всего времени.

Итак, скачиваем Process Monitor с сайта разработчика technet.microsoft.com/en-us/sysinternals/processmonitor.aspx и запускаем от имени администратора. В главном меню выберите Option -> Enable Boot Logging.

В открывшемся окошке отметьте галочкой Generate thread profiling events с включенной радиокнопкой Every second.

Нажмите «OK» и перезагрузите компьютер. Когда появится рабочий стол, запустите Process Monitor повторно. Откроется окошко с уведомлением «A log of boot-time activity was created…». Нажмите «OK» и сохраните файл PML в любое удобное вам расположение.

Примечание: протоколирование событий драйвером procmon23.sys запустится сразу после перезагрузки системы и будет продолжаться в фоновом режиме до тех пор, пока пользователь не запустит утилиту Process Monitor. Если утилиту не запустить, временный файл дампа procmon.pmb в каталоге *C:Windows* заполнит все свободное пространство на диске.

В нашем примере было создано два файла дампа Bootlog .pml и Bootlog-1.pml общим размером 464 Мб. Перед тем, как приступить к их анализу, кликните в окне Process Monitor по заголовку таблицы данных правой кнопкой мыши, нажмите Sеlеct Columns.

И отметьте в открывшемся окошке пункт (столбец) Duration.

Далее выберите в меню Filter -> Filter.

И установите в окне создания фильтра параметры Duration, more than и 10, как показано на скриншоте.

10 в данном примере это количество секунд, затраченных процессами на выполнении своих операций.

Теперь нажмите сначала «Add», потом «OK», и в результате в окне утилиты окажутся процессы, на загрузку которых было затрачено больше всего времени.

Для более детального анализа можно воспользоваться опцией Process Tree из меню Tools, отображающей процессы в виде древовидного списка с указанием дополнительных сведений о продолжительности, времени старта и завершения каждого процесса.

Выявив таким образом проблемные процессы и сопоставив их с исполняемыми файлами и службами, вы можете выполнить корректную оптимизацию системы, убрав последние из автозагрузки.

Конкретика или что во вкладках Монитора?

От обзорной вкладки перейдём к конкретным показателям. Окна Монитора доступны к изменениям и визуальным настройкам:

монитор ресурсов в полный экран

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

процесс в мониторе ресурсов

Переходя по каждой из вкладок, вы можете увидеть как выбранный процесс (или процессы) влияет на загрузку процессора, сколько они ил он потребляют оперативной памяти. Можно проверить, идёт ли сейчас от имени процесса запись на диски, и общается ли сейчас процесс с кем-либо по сети, отнимая сетевой трафик. Во вкладках…

  • ЦП – отображается информация о загрузке процессора над каждой из выполняемых задач. Помните, что некоторые приложения (чаще всего браузеры) разбивают себя на несколько одноимённых процессов с целью предотвращения зависания, сильной нагрузки на ЦП и потери данных. Дескрипторы в части окна ниже показывают связанные с процессами файлы библиотек и ключи реестра, которые сейчас обрабатываются. Отсюда можно проследить практически все цепочки, связанные с любым процессом в вашей системе.
  • Память – выводится список тех же процессов с потребляемыми ресурсами RAM, причём внизу вкладки можно увидеть состояние общей памяти в виде строки состояние с всплывающими подсказками:

оперативная память на процесс

Обратите внимание на столбец с наименованием Ошибок отсутствия страниц в памяти в секунду. Нормальный показатель здесь – 0, но и другая цифра не должна вас смущать. Цифры в столбце не означают ошибки памяти, это лишь показатель того, что системе в какой-то момент “немного не хватило” физических объёмов RAM, и та отправилась за дополнительными объёмами оперативки к swap-файлу на жёстком диске. Повторюсь, эта ситуация при небольших показателях в столбце абсолютно нормальна.

  • Диск – показана информация по степени загруженности жёсткого диска выбранным процессом. Их уже не так много, так как нет смысла перечислять все процессы, висящие в памяти Windows. Отсюда хорошо видно, куда сейчас записываются данные или из которых осуществляется чтение.

запись и чтение данных с жёсткого диска процессом

Разверните строку Запоминающие устройства: увидите активность установленных логических томов по отношению к выбранному процессу. Эта вкладка, кстати, прекрасный инструмент для первоначального анализа “непонятных” процессов: слишком активная деятельность несистемных и неизвестных вам процессов должна вас насторожить. Плюсом к тому, показатель Длины очереди диска не должен забегать за единицы и, тем более, десятки единиц, если сейчас не происходит интенсивная запись чего-либо. В противном случае, присмотритесь к происходящим процессам.

  • Сеть – показана сетевая активность процессов. Здесь всё просто – если процесс отображён, значит его сейчас используют чьи-то сторонние сервера. И именно эти процессы сейчас грузят ваше сетевое соединение. Разверните все строчки основного окна вкладки:

сетевая активность приложений в мониторе ресурсов

Монитор ресурсов во вкладке подробно показывает ваши (локальные) и внешние IP адреса, порты и протоколы, по которым сейчас ведут общение выбранные процессы. Если вы имеете представления об этих понятиях, дальнейшие объяснения излишни. Смотрите и проверяйте.

А с кем общается мой компьютер?

( 2 оценки, среднее 4.5 из 5 )

Как подготовить лог Process Monitor (Procmon)

Программа Process Monitor является усовершенствованным инструментом отслеживания для Windows, который в режиме реального времени отображает активность файловой системы, реестра, а также процессов и потоков. В этой программе сочетаются возможности двух ранее выпущенных программ от Sysinternals: Filemon и Regmon, а также огромный ряд улучшений, включая расширенную и безвредную фильтрацию, всеобъемлющие свойства событий, такие как ID сессий и имена пользователей, достоверную информацию о процессах, полноценный стек потока со встроенной поддержкой всех операций, одновременную запись информации в файл и многие другие возможности. Эти уникальные возможности делают программу Process Monitor хорошим инструментом для выявления неполадок и вредоносных программ.

Рассмотрим пару примеров, когда применение программы актуально. Например, при попытке открыть .jpeg файл, картинка не открывается или при запуске Google Chrome появляется ошибка.
Анализируя лог Procmon’а можно увидеть, какие процессы происходили в системе при обращении к программе Google Chrome и чем была вызвана ошибка. Рассмотрим работу программы на примере ошибки Google Chrome.

Скачайте Process Monitor (для 32/64-bit версии Windows один файл) или с нашего зеркала. Распакуйте на рабочий стол. Перед запуском, закройте все активные программы, чтоб в панели задач фигурировал только Procmon.

1. Запустите программу. Появится главное окно прогрммы и окно фильтра. В окне фильтра поочередно нажмите Reset, Apply, Ok. Программа автоматически начнет работу. Иногда, при запуске, программа автоматически начинает работу без представления окна фильтра. В таком случае, остановите захват(Ctrl + E), откройте окно фильтра(Ctrl + L), поочередно нажмите Reset, Apply, Ok, сбросьте захваченный протокол(Ctrl + X), снова запустите работу(Ctrl + E).

7777.jpg

2. Сымитируйте действия, последствия которых, Вы хотите захватить. В данном случае запустите Google Chrome, появится ошибка:

Безымянный.jpg

3. Остановите захват(Ctrl +E), сохраните лог(Ctrl+S). (Чтоб избежать объёмного лога, пункты 1, 2, 3, проделайте быстро).

34.jpg

4. File -> Save . -> Сохраните лог в формате PML. Заархивируйте лог и выложите на форум.

post.jpeg

5. Если нельзя будет залить архив из за большого размера, то загрузите его на файлообменник, а ссылку на архив прикрепите в сообщении.

Сегодня в этом выпуске Geek School мы расскажем вам о том, как утилита Process Monitor позволяет вам заглянуть за кулисы и посмотреть, что ваши любимые приложения действительно делают за кулисами — к каким файлам они обращаются, к разделам реестра, к которым они обращаются. использовать и многое другое.

  1. Что такое инструменты SysInternals и как вы их используете?
  2. Понимание Process Explorer
  3. Использование Process Explorer для устранения неполадок и диагностики
  4. Понимание Process Monitor
  5. Использование Process Monitor для устранения неполадок и поиска взлома реестра
  6. Использование автозапуска для работы с процессами запуска и вредоносными программами
  7. Использование BgInfo для отображения системной информации на рабочем столе
  8. Использование PsTools для управления другими ПК из командной строки
  9. Анализ и управление вашими файлами, папками и дисками
  10. Заключение и совместное использование инструментов

В отличие от утилиты Process Explorer, на которую мы потратили несколько дней, Process Monitor предназначен для пассивного просмотра всего, что происходит на вашем компьютере, а не для активного уничтожения процессов или закрытия дескрипторов. Это все равно, что взглянуть на глобальный файл журнала для каждого события, которое происходит на вашем ПК с Windows.

Хотите понять, в каких разделах реестра ваше любимое приложение хранит свои настройки? Хотите выяснить, какие файлы затрагивает сервис и как часто? Хотите узнать, когда приложение подключается к сети или открывает новый процесс? Это Process Monitor на помощь.

Мы больше не делаем много статей о взломе реестра, но когда мы только начинали, мы использовали Process Monitor, чтобы выяснить, к каким ключам реестра обращались, и затем настраивали эти ключи реестра, чтобы посмотреть, что произойдет. Если вы когда-нибудь задумывались над тем, как какой-то фанат обнаружил взлом реестра, которого никто никогда не видел, вероятно, это было через Process Monitor.

Утилита Process Monitor была создана путем объединения двух разных утилит старой школы, Filemon и Regmon, которые использовались для мониторинга файлов и активности реестра, как следует из их имен. Хотя эти утилиты все еще доступны и хотя они могут удовлетворить ваши конкретные потребности, вам будет гораздо лучше с Process Monitor, поскольку он может лучше обрабатывать большой объем событий благодаря тому, что он был разработан для этого.,

Стоит также отметить, что Process Monitor всегда требует режим администратора, потому что он загружает драйвер ядра под капотом для захвата всех этих событий. В Windows Vista и более поздних версиях вам будет предложено диалоговое окно UAC, но для XP или 2003 вам необходимо убедиться, что используемая учетная запись имеет права администратора.

События, которые регистрирует монитор процесса

Process Monitor собирает тонны данных, но не все, что происходит на вашем компьютере. Например, Process Monitor не заботится о том, перемещаете ли вы мышь, и он не знает, работают ли ваши драйверы оптимально. Он не будет отслеживать, какие процессы открыты и тратит впустую процессор на вашем компьютере — в конце концов, это задача Process Explorer.

Что он делает, так это фиксирует определенные типы операций ввода / вывода (независимо от того, происходят ли они через файловую систему, реестр или даже по сети). Он также будет отслеживать несколько других событий ограниченным образом. Этот список охватывает события, которые он захватывает:

  • Реестр — это может быть создание ключей, их чтение, удаление или запрос к ним. Вы будете удивлены, как часто это происходит.
  • Файловая система — это может быть создание, запись, удаление файлов и т. Д., И это может быть как для локальных жестких дисков, так и для сетевых дисков.
  • Сеть — это покажет источник и назначение трафика TCP / UDP, но, к сожалению, данные не отображаются, что делает его немного менее полезным.
  • Процесс — это события для процессов и потоков, в которых процесс запускается, поток запускается или завершается, и т. Д. Это может быть полезной информацией в определенных случаях, но часто это то, что вы хотели бы увидеть в Process Explorer.
  • Профилирование — эти события регистрируются Process Monitor для проверки количества процессорного времени, используемого каждым процессом, и использования памяти. Опять же, вы, вероятно, захотите использовать Process Explorer для отслеживания этих вещей большую часть времени, но здесь это полезно, если вам это нужно.

Таким образом, Process Monitor может захватывать операции ввода-вывода любого типа, независимо от того, происходит ли это через реестр, файловую систему или даже по сети — хотя записываемые данные не фиксируются. Мы просто смотрим на тот факт, что процесс записывает данные в один из этих потоков, поэтому позже мы сможем узнать больше о том, что происходит.

Интерфейс монитора процесса

Image

Когда вы впервые загрузите интерфейс Process Monitor, вам будет представлено огромное количество строк данных, с большим количеством данных, поступающих быстро, и это может быть огромным. Ключ должен иметь представление, по крайней мере, о том, что вы смотрите, а также о том, что вы ищете. Это не тот тип инструмента, который вы проводите в спокойном дне, просматривая, потому что за очень короткий промежуток времени вы будете просматривать миллионы строк.

Первое, что вы захотите сделать, — это отфильтровать эти миллионы строк до гораздо меньшего подмножества данных, которые вы хотите видеть, и мы научим вас, как создавать фильтры и сосредоточиться именно на том, что вы хотите найти., Но сначала вы должны понять интерфейс и какие данные на самом деле доступны.

Глядя на столбцы по умолчанию

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

  • Время — этот столбец достаточно понятен, он показывает точное время, когда произошло событие.
  • Имя процесса — имя процесса, который сгенерировал событие. Это не показывает полный путь к файлу по умолчанию, но если вы наведите курсор мыши на поле, вы можете точно увидеть, какой это был процесс.
  • PID — идентификатор процесса, который сгенерировал событие. Это очень полезно, если вы пытаетесь понять, какой процесс svchost.exe сгенерировал событие. Это также отличный способ изолировать отдельный процесс для мониторинга, предполагая, что этот процесс не запускается сам по себе.
  • Операция — это имя операции, которая регистрируется, и есть значок, который соответствует одному из типов событий (реестр, файл, сеть, процесс). Это может немного сбивать с толку, например, RegQueryKey или WriteFile, но мы постараемся помочь вам преодолеть путаницу.
  • Путь — это не путь процесса, это путь к тому, над чем работало это событие. Например, если произошло событие WriteFile, в этом поле будет отображаться имя файла или папки, к которой вы прикасались. Если бы это было событие реестра, было бы показано полный доступ к ключу.
  • Результат — показывает результат операции, который кодирует как SUCCESS или ACCESS DENIED. Хотя у вас может возникнуть соблазн автоматически предположить, что БУФЕР СЛИШКОМ МАЛЕНЬКИЙ означает, что произошло что-то действительно плохое, в большинстве случаев это не так.
  • Подробно — дополнительная информация, которая часто не переводится в обычный мир поиска и устранения неисправностей.

Вы также можете добавить дополнительные столбцы к отображению по умолчанию, выбрав «Параметры» -> «Выбрать столбцы». Это не будет нашей рекомендацией для вашей первой остановки, когда вы начнете тестировать, но, поскольку мы объясняем столбцы, стоит упомянуть уже.

Image

Одна из причин добавления дополнительных столбцов на дисплей заключается в том, что вы можете очень быстро фильтровать эти события, не перегружаясь данными. Вот несколько дополнительных столбцов, которые мы используем, но вы можете найти использование для некоторых других в списке в зависимости от ситуации.

  • Командная строка — хотя вы можете дважды щелкнуть любое событие, чтобы увидеть аргументы командной строки для процесса, который сгенерировал каждое событие, может быть полезно быстро просмотреть все параметры.
  • Название компании. Основная причина полезности этого столбца заключается в том, что вы можете просто быстро исключить все события Microsoft и сузить свой мониторинг до всего, что не является частью Windows. (Вы должны убедиться, что у вас нет каких-либо странных процессов rundll32.exe, запущенных с помощью Process Explorer, поскольку они могут скрывать вредоносные программы).
  • Родительский PID — это может быть очень полезно, когда вы устраняете неполадки в процессе, который содержит много дочерних процессов, таких как веб-браузер или приложение, которое продолжает запускать наброски как другой процесс. Затем вы можете отфильтровать по PID Parent, чтобы убедиться, что вы захватили все.

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

Изучение одного события

Просмотр объектов в списке — это отличный способ быстро увидеть множество различных точек данных одновременно, но это определенно не самый простой способ изучения отдельного фрагмента данных, а в список. К счастью, вы можете дважды щелкнуть любое событие, чтобы получить дополнительную информацию.

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

Image

Переключение на вкладку «Процесс» дает много полезной информации о процессе, который сгенерировал событие. Хотя вы обычно хотите использовать Process Explorer для работы с процессами, может быть очень полезно иметь много информации о конкретном процессе, который сгенерировал конкретное событие, особенно если это то, что произошло очень быстро, а затем исчезло из список процессов. Таким образом, данные собираются.

Image

Вкладка «Стек» — это то, что иногда будет чрезвычайно полезно, но зачастую это будет совсем не полезно. Причина, по которой вы захотите взглянуть на стек, состоит в том, что вы можете устранить неполадки, изучив столбец Module на предмет того, что выглядит не совсем правильно.

Например, представьте, что процесс постоянно пытается запросить или получить доступ к файлу, который не существует, но вы не знаете, почему. Вы можете просмотреть вкладку Stack и посмотреть, есть ли какие-то модули, которые выглядят неправильно, а затем исследовать их. Вы можете обнаружить устаревший компонент или даже вредоносное ПО, вызывающее проблему.

Image

Или вы можете обнаружить, что здесь нет ничего полезного для вас, и это тоже хорошо. Есть много других данных для просмотра.

Примечания о переполнении буфера

Прежде чем мы продолжим, мы хотим отметить код результата, который вы часто увидите в списке, и, основываясь на всех ваших знаниях гиков, вы можете немного испугаться. Поэтому, если вы начнете видеть в списке BUFFER OVERFLOW, не думайте, что кто-то пытается взломать ваш компьютер.

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

Как определить, к каким ключам реестра обращается запущенная в Windows программа

Большинство программ, которые вы устанавливаете на компьютер, хранят часть своих файлов в папке Program Files , а часть — в разных служебных папках пользователя. А вот настройки свои они предпочитают хранить в системном реестре. Знать, где именно хранит свои настройки та или иная находящаяся в активном состоянии программа бывает полезно, но как определить ветку реестра, в которую эти самые настройки записаны?

С помощью Procmon или иначе Process Monitor — маленькой портативной тулзы, входящей в состав пакета утилит Sysinternals , предназначенного для обслуживания и системного администрирования Windows. Хорошо, предположим, что мы хотим узнать, к каким ключам реестра у нас обращается программа ClipClip или какая-либо иная программа. Первым делом запускаем от имени администратора Procmon, а затем и отслеживаемое приложение, заодно определяя полное название его исполняемого файла в Диспетчере задач.

Рабочий стол

Фильтруем ненужные процессы

В нашем примере исполняемый файл приложения называется ClipClip.exe , отфильтруем его, убрав из поля зрения все ненужные нам процессы.

Для этого в Process Monitor идем в меню «Filter».

Process Monitor

Выбираем в нём опцию с тем же названием и выбираем в выпадающих списках в полях следующие параметры:

  • Process Name.
  • Is.
  • Название процесса.

Остальные настройки не меняем и жмем кнопку «Add», чтобы добавить наш фильтр, а затем нажимаем кнопки «Apply» и «OK», дабы применить фильтр.

Filter

Обратите внимание на колонку «Operation»: пункты, в названии которых имеется элемент строки «Reg» это и есть ключи реестра, к которым обращается программа.

Operation

Кстати, на панели инструментов утилиты можете отключить отображение других типов активности процесса, оставив только обращение к реестру. Вот таким нехитрым способом можно легко выяснить, к каким ключам реестра обращается программа в процессе своей работы.

Понравилась статья? Поделить с друзьями:
  • Как запустить process explorer windows 10
  • Как запустить pro100 на windows 10
  • Как запустить prince of persia warrior within на windows 10
  • Как запустить nfs pro street на windows 10
  • Как запустить powershell с правами администратора на windows 10