Process monitor как отследить приложение
Перейти к содержимому

Process monitor как отследить приложение

  • автор:

SMEARG

Наверное, каждый уважающий себя ИТ-шник знает (или хотя бы слышал) про Process Monitor (ProcMon) от Sysinternals.

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

Вообще, по моему мнению всё, что касается ProcMon лучше всего описано в книге от разработчиков, которая так и называется “Утилиты Sysinternals. Справочник администратора”.

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

Запуск ProcMon

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

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

Если просто запустить ProcMon рабочее окно программы моментально заполнился разными событиями, даже если вы ничего не делаете. Разобраться в этих событиях, и найти интересующие даже опытному мастеру очень сложно. Да и не нужно, но обо всём по порядку.

Чаще всего ProcMon запускается с конкретной целью, например, определить, что делает та, или иная программа, какой процесс пишет файлы в определённый каталог или ветвь реестра, куда девается место на диске, и т.д. Поэтому, если просто запусить ProcMon то придётся остановить сбор событий (Ctrl+E), очистить уже собранные события (Ctrl+X), настроить фильтры (Ctrl+L), и снова запустить наблюдение. Для того, чтобы не делать столько лишний движений предусмотрен параметр командной строки /noconnect:

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

Вообще для упрощения запуска, я делаю (и всем советую делать так) как описывается всё в той же книге:

Мой соавтор Аарон обычно создает папку C:\Program Files\Sysinternals и распаковывает в нее содержимое пакета Sysinternals Suite. Там утилиты невозможно изменить без прав администратора. Затем он добавляет этот каталог в системную переменную окружения Path, что позволяет легко запускать утилиты откуда угодно, в том числе через меню Start | Run (Пуск | Выполнить).

Фильтры в ProcMon

Как было сказано выше окно фильтров открывается при запуске с параметром /noconnect. Если вы его нечаянно закрыли, или нужно подправить уже настроенные фильтры, открыть окно фильтров можно сочетанием клавиш Ctrl+L, или через меню Filter | Filter… .

Вот мы и добрались до практики ��

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

Итак, у нас открыто окно фильтров.

Procmon - filter - notepad

 

Фильтры в ProcMon

На всякий случай нажимаем кнопку сброса фильтров в состояние по умолчанию – Reset(по умолчанию в ProcMon настроено до фига фильтров, не рекомендуется их удалять) и добавляем фильтр

Process Name is notepad.exe include.

Нажимаем кнопку Add. Как можно понять из названия захватываться будут только события, связанные с процессом notepad.exe, т.е. те события, которые генерирует блокнот.

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

Process Name begins with notepad include

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

Operation is WriteFile include

Нажимаем Add и OK (вообще можно просто нажать OK, в таком случае ProcMon скажет, что такого фильтра ещё нет, и спросит хотим-ли мы его добавить. Дело в том, что нажатие кнопки закрывает OK окно фильтров, если это не единственный фильтр, то лучше нажать кнопку Add, это позволит добавить фильтр, и оставить окно фильтров открытым для последующих фильтров).

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

Ещё один важный момент.

По умолчанию ProcMon регистрирует всю активность системы, даже те события, которые не попадают под фильтры, что в некоторых случаях может приводить к подтормаживанию работы. Если вы уверены в том, что фильтры настроены правильно (в данном примере мы уверены), и вам не нужны события, скрытые ими – их можно отбросить при помощи опции Filter | Drop Filtered Events (Удаление отфильтрованных событий) в меню Filter. Данный параметр действует только на регистрацию текущих событий, ранее записанные события из журнала не удаляются.

После того как фильтры настроены запускаем сбор событий (кнопка с изображением лупы, или Ctrl+E). Запускаем блокнот, пишем какой-то текст и сохраняем файл. Смотрим, что получилось:

Procmon - Write file

Файловая активность в ProcMon

Как видно из скриношота ProcMon зафиксировал событие записи файла процессом notepad.exe по пути C:\temp\test.txt.

Проведём ещё один эксперимент.

Остановим захват событий (Ctrl+E), з акроем блокнот и очистим собранные события (Ctrl+X). Вызовем окно фильтов (Ctrl+L), сбросим фильтры (кнопкой Reset) и добавим следующий фильтр:

Path begins with c:\temp\

Этим самым мы указываем, что нас интересует любая активность по пути C:\temp. А так как значение указано не точно (не is, а begins with), то захватываться будут события не только из этого каталога, но и из всех его подкаталогов.

Проверьте, чтобы было включено наблюдение только за файловой системой (при сбросе фильтров всё сбрасывается в состояние по умолчанию)

Procmon - filter - Path begins with

  Фильтры в ProcMon

Запустим наблюдение. Откроем проводник и перейдём по нашему пути. Заглянем в ProcMon.

Procmon - Listing direcrory

Так выглядит открытие каталога в ProcMon

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

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

Для того, чтобы увидеть сами события чтения файла, остановите сбор событий, очистите окно результатов, добавьте фильтр

Operation is ReadFile

и снова откройте файл.

Должно получиться, что-то вроде этого (как видно из скриншота я открывал файл двумя разными процессами):

Procmon - ReadFile

А вот так выглядит чтение файла в ProcMon

Вот таким простым способом можно узнать кто пишет файлы в определённый каталог. Ещё раз отмечу, что это не всё, на что способен ProcMon, это только верхушка айсберга. Для более близкого знакомства с ним рекомендую почитать книгу “Утилиты Sysinternals. Справочник администратора”, а также искать дополнительную информацию в интернете, например, на YouTube, или TechDays. Кстати, на TechDays есть записи от самого Марка Русиновича с русским переводом ��

[видео] Process Monitor: как отследить приложение, записывающее непонятные файлы на диск

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

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

Process Monitor

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

Отслеживание активности

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

  • реестр
  • файловую систему
  • сеть
  • процессы и потоки

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

Process Monitor

Кроме того, убедитесь, что утилита отслеживает активность. Если у вас перечеркнута кнопка, которая на рисунке обведена красным, нажмите CTRL+E.

На рисунке выше активность отслеживается, причем только в файловой системе.

Основной фильтр

Теперь нужно применить фильтр, чтобы исключить не относящуюся к делу активность. Нажмите сочетание клавиш CTRL+L, и вы увидите возможности фильтрации. В Process Monitor сразу активны некоторые фильтры, исключающие отслеживание деятельности самой программы, а также некоторых системных компонентов (файла подкачки, таблицы MFT и т.д.). Это сделано для того, чтобы исключить мониторинг стандартной активности системы. В большинстве случаев удалять эти фильтры не нужно, и достаточно просто добавить свой.

Process Monitor

На рисунке выше показан фильтр, который будет отслеживать создание и изменение всех файлов, в путях к которым содержится tmp _out. Давайте разберем фильтр подробнее слева направо:

  • Path. Путь в файловой системе. Также можно указывать разделы реестра, когда отслеживается активность в нем.
  • contains. Условие, по которому определяется поиск ключевого слова. В переводе с английского это слово означает «содержит». В зависимости от задачи можно конкретизировать условие, выбрав вариант begins with (начинается с) или ends with (заканчивается на).
  • tmp _out. Ключевое слово, которое в данном случае должно содержаться в пути. Имя файла и его расширение являются частью полного пути к файлу.
  • Include. Включение заданного условия в список отслеживаемых.

Не забудьте нажать кнопку Add, чтобы добавить фильтр в список. Впрочем, если вы забудете, Process Monitor напомнит об этом, прежде чем закрыть окно фильтров.

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

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

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

Дополнительные фильтры

Обратите внимание, что утилита зафиксировала не только активность блокнота, но также проводника и поиска Windows. Не относящиеся к делу процессы можно исключить из результатов, создав дополнительные фильтры. Достаточно щелкнуть по процессу правой кнопкой мыши и выбрать из контекстного меню пункт Exclude <имя процесса>. Это самый простой способ создания фильтра, но можно сделать это из окна фильтрации, как показано выше. В этом случае условие будет: Process Name – Is — <имя процесса> — Exclude.

Запись и открытие лога

Когда вы точно знаете объект отслеживания (папку, раздел реестра, процесс и т.п), может иметь смысл не записывать в журнал отфильтрованные (ненужные) события: FilterDrop filtered events. Это существенно сократит размер лога.

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

Для сохранения лога в файл нажмите сочетание клавиш CTRL+B и укажите имя и желаемое расположение файла.

Process Monitor

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

Остановить отслеживание активности можно сочетанием клавиш CTRL+E.

Впоследствии вы всегда сможете загрузить в утилиту лог из сохраненного файла. Закройте Process Monitor и дважды щелкните файл лога с расширением PML. Содержимое лога отобразится в окне Process Explorer.

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

О видео

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

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

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

Более подробный рассказ о Process Monitor и другие примеры его практического использования вы можете посмотреть в видео моего коллеги Василия Гусева, если у вас есть свободные 40 минут 🙂

Об авторе

Вадим — владелец этого блога, и почти все записи здесь вышли из-под его пера. Подробности о блоге и авторе здесь. Поддержать автора вы можете тут.

Вас также может заинтересовать:

Я в Telegram

Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.

комментариев 19

Вадим.
Может стоит упомянуть еще и Filemon он тоже позволит решить задачу.

Ваша оценка: Thumb up Thumb down0

sergm, не вижу смысла, т.к. Process Monitor объединяет функционал Regmon и Filemon. Эти две утилиты больше не распространяются автором.

Годится! Согласны? Thumb up Thumb down+4

Я сторонник того к чему привык 🙂 т.е. набору своего инструментария…
а то чего не хватает дописываю сам.

PS надо будет обновиться.

Ваша оценка: Thumb up Thumb down0

Vadim Sterkin, спасибо!

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

Ваша оценка: Thumb up Thumb down0

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

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

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

Ваша оценка: Thumb up Thumb down0

Да, скептическое 🙂 но только когда кино заменяет собой текст и длится более 20 минут. Сути там минуты на 3, всё остальное — это «эээ», «ааа» и гигалитры воды. Я не готов 30 минут из 40 смотреть на презентационные шаблоны и рабочий стол показывающего, выискивая там нужные кусочки.
К короткому видео, когда оно дополняет текст (а не заменяет его), претензий нет. Это может быть полезно, если сделано со вкусом. Тебе удаётся делать интересно. Спасибо!
Твои статьи я читаю внимательно, но видимо глаз уже сам перематывает многабукф.
З.Ы. А почему нет ссылки «цитировать» для самого материала, как для комментов?

Ваша оценка: Thumb up Thumb down+1

Morpheus: Это может быть полезно, если сделано со вкусом. Тебе удаётся делать интересно. Спасибо! »

Morpheus: А почему нет ссылки «цитировать» для самого материала, как для комментов? »

Ссылки «Ответить» и «Цитировать» — это плагин Quote Comments. Без него в постах только ссылка «Ответ», создающая древовидную структуру, которая мне не нравится. В статьях такого нет, да и не нужно особо. Я хочу, чтобы мои статьи воспринимались как единое целое, а не раздирались на цитаты 😉

Ваша оценка: Thumb up Thumb down0

Спасибо Вадим! Очень интересно, но я с таким не сталкивался пока.
Видео суперски, кратко и ясно, такое редкость. Но и описание с нормальным количеством скринов, даже лучше.
Спасибо за Ваш блог. Читаю с удовольствием :Beer:

Ваша оценка: Thumb up Thumb down0

А я Вадим сразу вам и написал- очень будет полезно если будут хоть коротелькие ролики!! Как писал выше- нажал на паузу и разобрался)..Да и мне как то зрительно более понятно(имхо).

Ваша оценка: Thumb up Thumb down0

Андрей, спасибо за отзыв — я рад, что мои труды над созданием видео получают высокую оценку моих читателей зрителей 🙂

Алекс, ваши пожелания воплощаются в жизнь 😉 Но, как я сказал, видео более затратно по времени, хотя я все еще оптимизирую процесс его создания. Но при любом раскладе это дольше написания статьи, если придерживаться таких стандартов подачи материала, а не просто лепить 20-минутный ролик с мычанием 🙂

Ваша оценка: Thumb up Thumb down0

Хорошая статья и самое главное (я преподаватель информатики) с хорошими примерами.

Ваша оценка: Thumb up Thumb down0

Вадим понятно! но в любом случае будем надеяться хоть на редкие небольшие ролики:).

Ваша оценка: Thumb up Thumb down0

Logvinov Vladimir, спасибо за отзыв. Похоже, вы оценивали материал с точки зрения дидактического пособия 🙂

Ваша оценка: Thumb up Thumb down0

Полезная статья. Просмотрел и прочитал, к сожалению, не помогло. Дело в том, что у меня утекает дисковое пространство со скоростью 1-2 мега в секунду, причём я не могу найти, куда. утекает с системного диска. Аваст последний. Сканировал и спайдером, и авастом, шиш. ВСё чисто, по их мнению. Свободного места 30 гиг, если утром комп включил, и даже не логинишься, то к вечеру, после просто стояния в экране приветствия, при входе в систему обязательно вылезет окно, что нет дискового пространства на диске С. Понятно, что какая-то служба косячит, но вот какая? Причём после перезагрузки — места снова 30 гиг, и потихоньку утекает. ФАРом хорошо видно утекание. Темпы вычищены, и прочие восстановления системы уже давно отключены, а всё равно утекает. При этом файл подкачки не пухнет более 0,5 гига, да и оперативка не заполняется полностью. Впрочем, своп я отключал, не помогло. Как бы сделать «фото» размеров файлов вначале работы, потом через некоторое время, и когда место кончится? Кто может захапывать под себя 30 гиг, а уверен, и больше? Комп в домашней сети, за NAT, сетевые дырки прикрыты. Переустновить винду можно, но гиморно. Кроме того, спортивный интерес. Винда хп лицензия со всеми апдейтами. Месяц уже голову ломаю. Как сломаю, перейду на линукс 🙂

Ваша оценка: Thumb up Thumb down0

Yuri, диагностику нужно проводить в два этапа:
1. Выявление папок, в которых записываются файлы.
2. Определение приложения, записывающего их.

Для первого этапа используйте специализированные утилиты. См. номер 5 в списке 10 лучших бесплатных программ для быстрой диагностики Windows. В комментариях упоминались и другие программы этого типа.

Ваша оценка: Thumb up Thumb down0

Просто спасибо. Такой труд дорогого стоит.

Ваша оценка: Thumb up Thumb down0

Дмитрий, спасибо на добром слове.

Ваша оценка: Thumb up Thumb down0

Сергей Валерьевич

Сделал всё как показано. Создал в процесс мониторе фильтр для файла с именем «123». Создаю его в блокноте, сохраняю с именем «123» — ноль реакции. Создал фильтр на Process name «CMD» — запускаю командную строку — срабатывает, показывает процесс. Что я делаю не так в первом случае?

Ваша оценка: Thumb up Thumb down0

Мне отсюда не видно, но похоже, что не включено отслеживание файловой активности (cmd — процесс).

Ваша оценка: Thumb up Thumb down0

Понимание Process Monitor

В этом уроке мы собираемся научить вас, как утилита 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 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 Monitor — отслеживание активности процессов Windows.

&nbsp 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

&nbsp Возможен вывод колонок, разбитых на 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 .

Панель Инструментов Process Monitor от Sysinternals

&nbsp Панель инструментов позволяет быстро выполнить наиболее необходимые и часто используемые в практической работе с программой, действия. Кнопки панели инструментов выполнены в стиле, характерном для большинства программных продуктов Sysinternals и, в основном, имеют схожее предназначение.

Кнопки панели инструментов Process Monitor от Sysinternals— Open — открыть ранее сохраненные данные мониторинга. Комбинация клавиш Ctrl+O
Кнопки панели инструментов Process Monitor от Sysinternals— Save — сохранить текущие данные мониторинга в файл. Имеется возможность сохранить все события (All Events), события, отфильтрованные текущими фильтрами (Events displayed using current filter) или события выделенные подсветкой (Highlighted events). Можно также использовать различный формат сохраняемых данных — обычный формат утилиты Process Monitor (PML), файл с разделителями (CSV), файл в формате XML.. Комбинация клавиш Ctrl+S
Кнопки панели инструментов Process Monitor от Sysinternals— Capture — Включение / выключение режима перехвата событий. Если значок лупы перечеркнут — мониторинг активности процессов остановлен. Комбинация клавиш Ctrl+E
Кнопки панели инструментов Process Monitor от Sysinternals— Autoscroll — Включение / выключение режима автоматической прокрутки экрана данных. При включении, в окне данных будут отображаться последние по времени выполнения операции. Если значок перечеркнут — прокрутка не будет выполняться. Комбинация клавиш Ctrl+E
Кнопки панели инструментов Process Monitor от Sysinternals— Clear — очистить текущие данные перехвата событий активности процессов. Комбинация клавиш Ctrl+X
Кнопки панели инструментов Process Monitor от Sysinternals— Filter — вызвать окно настройки фильтров. Комбинация клавиш Ctrl+L
Кнопки панели инструментов Process Monitor от Sysinternals— Highlight — вызвать окно настройки подсвечиваемых событий. Комбинация клавиш Ctrl+H
Кнопки панели инструментов Process Monitor от Sysinternals— Include Process From Window — Позволяет включить в мониторинг процесс, связанный с определенным окном. Для выбора окна нужно нажать левую кнопку мышки на значке мишени и (не отпуская кнопку) переместить указатель на нужное окно.
Кнопки панели инструментов Process Monitor от Sysinternals— Show Process Tree — отобразить окно с деревом процессов. Информация отображается в виде иерархической структуры, отображающей зависимости между родительскими и порожденными процессами. Процессы, имеющие одного и того же родителя, отображаются в порядке, соответствующем времени запуска. Так, например, процесс wininit.exe c идентификатором ( PID ) равным 364 запустил services.exe с идентификатором 420, который, в свою очередь породил несколько процессов svchost.exe и т.д.
Дерево процессов, отображаеое Process Monitor
При отображении дерева процессов для каждого из них выводится информация с именем, описанием, путем исполняемого файла, владельцем, командной строкой запуска и временем старта. При установке указателя мыши на строку конкретного процесса, в нижней части окна будет выведена подробная информация о нем.
Кнопки панели инструментов Process Monitor от Sysinternals— Find — стандартный диалог поиска строки Windows . Комбинация клавиш Ctrl+F
Кнопки панели инструментов Process Monitor от Sysinternals— Jump To Object — Стандартная для многих приложений от Sysinternals возможность быстрого перехода к исследуемому объекту — ключу или разделу в редакторе реестра, папке или файлу в проводнике Windows. Комбинация клавиш Ctrl+J

Следующая группа кнопок панели инструментов задает тип отображаемых событий (класс событий). Если кнопка «утоплена» — события данного типа будут отображаться:

Кнопки панели инструментов Process Monitor от Sysinternals— Show Registry Activity — отображать информацию об обращениях к реестру Windows
Кнопки панели инструментов Process Monitor от Sysinternals— Show File System Activity — отображать информацию об обращениях к файловой системе Windows
Кнопки панели инструментов Process Monitor от Sysinternals— Show Network Activity — отображать информацию о сетевой активности процессов
Кнопки панели инструментов Process Monitor от Sysinternals— Show Process and Thread Activity — отображать информацию об активности процессов, связанной с загрузкой библиотек, созданием и завершением других процессов или потоков.
Кнопки панели инструментов Process Monitor от Sysinternals— Show Process and Thread Activity — отображать информацию об активности процессов, связанной с загрузкой библиотек, созданием и завершением других процессов или потоков.
Кнопки панели инструментов Process Monitor от Sysinternals— Show Profiling Events — Отображать события класса Profiling. Применяется для определения степени использования центрального процессора (CPU) отдельными процессами и их компонентами.

Основное меню (menu bar) программы Process Monitor .

Пункты основного меню File

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 .

&nbsp Одно из основных применений 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 User Preferences
/* Do not edit this file.
*
* If you make changes to this file while the application is running,
* the changes will be overwritten when the application exits.
*
* To make a manual change to preferences, you can visit the URL about:config
* For more information, see http:// www.mozilla.org/ unix/ customizing.html#prefs
*/

Из перевода становится понятно, что настройки, внесенные вручную в данный файл, при запущенном обозревателе, не будут сохранены, поскольку будут перезаписаны при его завершении. И для ручного изменения настроек следует в адресной строке 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.

После ответа «Да» файл отчета будет сохранен, и можно приступать к анализу полученной информации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *