Filemon – отслеживание обращений к файловой системе.

Adding filter rules with right-click

You can also add filter rules via a right-click menu if you right-click on a process. As you can see below, you can create any kind of rule directly from this menu; no need to go to the Process Monitor Filter box at all!

To remove filter rules created via the right-click menu, you will still have to go to the Process Monitor Filter box to remove them.

Advanced topics

Are you still fiending for more information on procmon and how to use it? Let’s jump into some advanced topics! These topics are those that you probably won’t need to know about too often. These topics are around more under-the-hood types of procmon features but, this information can be helpful when troubleshooting procmon.

Event filters

To understand procmon, you undoubtedly need to understand the concept of event filters. Event filters are how you separate the signal from the noise. Event filters hide all of the events you’re not interested in. Above, you applied event filters by entire event classes but you can get a whole lot more granular.

There are multiple ways to interact with event filters. Let’s start out simple. Click on the Filter menu item at the top. You’ll see many different options to work with filters.

Exporting and opening events to/from log files

For procmon to display events to you in a window, they have to be stored somewhere. By default, events are stored in virtual memory, more specifically your page file.

Depending on how big of a page file you’ve defined (and system commit limit) depends on how many events procmon can store.

Procmon is capable of capturing up to 199 million events.

Finding the process accessing an ip address

Maybe you’ve some odd network behavior with Wireshark and need to figure out what process is initiating that communication. Fire up procon and add the following set of filter rules.

These filter rules limit events to only locally-initiated network traffic with a destination of a single IP address.

Finding what’s deleting a file

If you got a file on your Windows machine that keeps getting removed for some unknown reason and want to track it down, procmon can help (and it’s pretty easy).

How to collect a process monitor log in windows

Whenever it is necessary to get information on the exact process/application that changes or creates a file/registry key or accesses a path on the local drive, please do the following:

  1. Download Process Monitor from Windows Sysinternals page, extract and run it:

    Filemon - отслеживание обращений к файловой системе.

  2. Useful options:
    • You might want to capture specific events only and exclude other events from the resulting file. When you apply a filter don’t forget to enable the option that will delete excluded events from the resulted log file:  Filter -> Drop Filtered Events. Otherwise events that were excluded with the filter will be still saved in the log file.
    • By default, Process Monitor stores all events in virtual memory. To store data on disk, navigate to File -> Backing files to choose to store captured data on the drive or in virtual memory. Select Use file named and specify the destination folder and file name.
    • You might want to limit the number of events captured. The History depth parameter allows you to limit the number of entries kept so that you can leave Process Monitor running for long periods and ensure that it always keeps the most recent events (by rewriting the log file once the limit is reached). The minimum value is 1 million events; the maximum (and default) is 199 million. Navigate to Options -> History depth and set the limit.
  3. Reproduce the issue without closing the utility;
  4. Click File ->Save in the main Process Monitor window:

    Filemon - отслеживание обращений к файловой системе.

  5. Note the path where the log file is saved, so that you will be able to find it:

    Filemon - отслеживание обращений к файловой системе.

  6. Select All events and save the log file in the PML format:

    Filemon - отслеживание обращений к файловой системе.

  7. Please make sure to copy the logfile.PML into a ZIP file, as it becomes significantly smaller:
    Filemon - отслеживание обращений к файловой системе.

How to collect process monitor log from winpe bootable media

 Download Process Monitor from Windows Sysinternals page and unzip the archive. It contains several .exe files, you will need procmon64.exe (as procmon.exe does not work with WinPE media).

Importing and exporting filters

If you expect to load procmon on another computer and keep all of your saved filters, you’re out of luck. Procmon doesn’t have a cloud service to sync filters. But, you can manually export filters and import them later.

To export procmon filters:

  1. Go to the Organize Filters box.
  2. Click on the filter you’ve already saved and would like to export.
  3. Click on the Export button.
  4. Provide a name, choose a path and click OK. You’ll see that all procmon filters are saved with a PMF extension.

To import procmon filters:

  1. Go to the Organize Filters box.
  2. Click on the Import button.
  3. Find the filter you’d like to import and click OK.

You can see a visual walkthrough of these steps below.

Managing event filter rules

Depending on your use case, you will undoubtedly need to add your own rules. There are a few different ways to add rules.

More information

The latest version of the Process Monitor utility is always available at Microsoft TechNet Sysinternals Download Page.

Process Monitor can be run on Windows Vista and higher, Windows Server 2008 and higher.

You can open PML files only with the Process Monitor itself.


Procmon configures drivers to run as a boot start driver next to the system startup, before all other drivers.

Activity will be logged in %windir%Procmon.PMB driver until shutdown or running Procmon again. If you will not run Procmon during boot session, you’ll capture a trace of the entire boot-to-shutdown cycle.

To enable logging for subsequent boots, you must explicitly enable it again each time.

You can automate the converting of the unsaved boot log by /ConvertBootLog pml-file

Keeping procmon running affter logoff.PsExec -s -d Procmon.exe-d option allows PsExec to exit without waiting for the target process to exit

Analysis tools

  • Process activity summary – CPU utilization, File I/O operations, registry operations, network operations, memory
  • File summary – for each unique file system path, the dialog box displays how much total time was spent performing I/O to the file, the number of opens, closes, reads, writes, Get ACL, Set ACL and other operations, the total number of operations performed and number of bytes read from and written to the file. Noneexpandable one indicates operations performed on the directory itself, expandable displays the sums of all operations performed on its files and subdirectories. 
  • Registry summary
  • Stack Summary
  • Network summary
  • Cross Reference Summary – lists all paths displayed by the current filter that have been accessed by more than 1 proces.
  • Count Occurences – shows count by selected colums. (for ex. Process name – count). If filter applied works depending on the filter properties.
:/>  Пропал звук на ноутбуке с Windows 10 – что делать?

Opening saved event logs

You’ve captured thousands of events on one computer, saved it that capture session to a PML file and have copied it to another computer for investigation. Now what? You need to open it.

You can open any PML file regardless if you captured it on your local computer or not by simply going to up File —> Open and choosing the PML file.

You can open logs from the command line using the /OpenLog switch e.g. procmon.exe /OpenLog C:MyLogFile.pml.


This Ultimate Guide will apply to nearly all Windows systems but, for the sake of completeness (and to prevent you from attempting to run procmon on a Windows 3.1 computer), you’ll need the following:

  • A Windows Vista or Windows Server 2008 or higher machine (x86 or x64)

That’s it! You’ll download and install procmon in the following sections. The Guide will use v3.6 of procmon throughout on a Windows 10 Build 1909 x64 machine.

Real-world examples

You should now have a good understanding of what procmon can do and how it can help you track down Windows events. Let’s now apply that knowledge and cover a few common use cases where you might need this kind of know-how.

Removing event filter rules

You can also just as easily remove and change up filter rules.

  1. Click on the Filter icon at the top of the main window to open the Process Monitor Filter box.

Setting up long-running procmon captures

A busy Windows system can produce a lot of events procmon captures that can overwhelm your PC. If you intend to run procmon for an extended amount of time, there a few measure you should take into consideration.

Tracking down locked file issues

We’ve all been there; you try to move or remove a file and it’s locked by some other process. Sometimes, if you’re trying to uninstall an application, for instance, you’ll never know if that random error you see has anything to do with a locked file in the first place!

To figure out when Windows attempts to remove or modify a locked file, use the below filter set.

Unloading the procmon24 filter driver

There are some cases where the PROCMON24 filter driver may conflict with various hardware devices and you’ll need to unload it. But, this situation may not be as easy as it seems.

You can unload filter drivers using the fltmc unload command followed by the name of the filter driver.

But if you try the above command, you’ll soon find out that it doesn’t work. You can’t unload this filter driver because presumedly the developer didn’t add this ability.

If you need to unload the PROCMON24 filter driver, a reboot, unfortunately, is the only way to do it.

Using the process monitor filter box

In the last section, you saw what the Process Monitor Filter box looked like and viewed all of the rules. In this box, you can also create, modify and removal rules too.

Let’s say you’d like to only see the times when the explorer.exe process queried a registry key.

What is process monitor

Process Monitor is an advanced monitoring tool that shows real-time file system, registry, and process activity. It combines the features of two legacy Sysinternals utilities, Filemon and Regmon, and adds a number of other enhancements.

Runs on:

  • Client: Windows 8.1 and higher.
  • Server: Windows Server 2022 and higher.

Process Monitor can be used to track system and software activity to troubleshoot some of the product issues, especially when it is necessary to track what particular application or process accesses a file or a registry key.

The main Process Monitor window lists all system operations along with their exact time, process name, ID and the result for every single operation:

To access advanced information on any single operation right-click on the operation line and choose Properties:

When analyzing a Process Monitor log, it is recommended to filter out entries. For example, you can right-click on Successes under Results, and exclude it. You can also filter out Processes and generally any field you like.

You can choose to store Process Monitor data in a file on disk instead of virtual memory (e.g if running Process Monitor consumes too much RAM or slows down the computer):

1. Go to File -> Backing files:

2. Specify the file where you want event data to be stored

Wrap up

Well there you have it; an extensive guide on everything procmon! Although you’ve learned a lot about procmon, there’s always more gems to uncover with this handy utility.

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

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

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

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

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

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

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

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

:/>  delphi - Как получить хендл окна по PID процесса? - Stack Overflow на русском

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

События, фиксируемые process monitor

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оставьте комментарий