Как сделать

Понимание Process Monitor

SysInternals 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы точно знаете, что у вас есть нужные фильтры для просмотра именно того, что вы действительно хотите видеть, вы можете рассмотреть возможность использования функции Фильтр -> Удалить отфильтрованные события.

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

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

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

На сегодняшнем уроке есть еще одна последняя вещь — это функция Open / Save, которую мы обычно не выделяем ни в одном другом приложении, но в этом случае это действительно важно.

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

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

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

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

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Как сделать

Как изменить рингтон по умолчанию на вашем iPhone