Process Explorer v16.43
By Mark Russinovich
Published: August 18, 2021

Run now from Sysinternals Live.
Introduction
Ever wondered which program has a particular file or directory open? Now you can find out. Process Explorer shows you information about which handles and DLLs processes have opened or loaded.
The Process Explorer display consists of two sub-windows. The top window always shows a list of the currently active processes, including the names of their owning accounts, whereas the information displayed in the bottom window depends on the mode that Process Explorer is in: if it is in handle mode you’ll see the handles that the process selected in the top window has opened; if Process Explorer is in DLL mode you’ll see the DLLs and memory-mapped files that the process has loaded. Process Explorer also has a powerful search capability that will quickly show you which processes have particular handles opened or DLLs loaded.
The unique capabilities of Process Explorer make it useful for tracking down DLL-version problems or handle leaks, and provide insight into the way Windows and applications work.
Related Links
Download

Run now from Sysinternals Live.
Runs on:
Installation
Simply run Process Explorer (procexp.exe).
The help file describes Process Explorer operation and usage. If you have problems or questions please visit the Process Explorer section on Microsoft Q&A.
Note on use of symbols
When you configure the path to DBGHELP.DLL and the symbol path uses the symbol server, the location of DBGHELP.DLL also has to contain the SYMSRV.DLL supporting the server paths used. See SymSrv documentation or more information on how to use symbol servers.
Learn More
Here are some other handle and DLL viewing tools and information available at Sysinternals:
Как посмотреть какие dll использует процесс
Одним и тем же файлом DLL может одновременно пользоваться несколько программ. Это вызывает проблемы, например, в случае необходимости удалить файл из системы. Чтобы снять занятость файла, нужно закрыть все программы, которые его блокируют в настоящий момент.
Внимание! Все примеры будут приведены на системном файле только для демонстрации. Системные файлы удалять крайне не рекомендуется!
Для начала нам необходимо открыть командную строку Windows.делается это путем ввода cmd в строку “Выполнить…” или “Найти программы и файлы” в меню Пуск.
После открытия командной строки необходимо ввести команду tasklist /m FILENAME.dll, где FILENAME — название нужной вам библиотеки.
В качестве результата система покажет весь список процессов, которые занимают файл библиотеки в настоящий момент. В нашем примере их оказалось два, но может быть один или любое другое число
После освобождения файла от активных процессов над ним можно будет совершать различные операции, такие как отмена регистрации и удаление. Если вы хотите облегчить процесс работы с DLL-файлами, используйте DLLSearch Client. Он поможет упростить действия по поиску, установке и другим процессам, связанным с DLL.
DLLSearch Client — бесплатная программа
для исправления ошибок DLL.
© 2020 Запрещено копирование любых материалов.
Просмотр библиотек DLL и исполняемых файлов в окне «Модули» (C#, C++, Visual Basic, F#)
В процессе отладки в Visual Studio окно Модули отображает список используемых приложением библиотек DLL и исполняемых файлов ( .exe), а также сведения о них.
Окно «Модули» недоступно при отладке SQL и скриптов.
Использование окна модулей
Чтобы открыть окно «Модули» во время отладки, выберите Отладка > Окна > Модули или нажмите клавиши CTRL+ALT+U.
По умолчанию модули в окне Модули упорядочены в порядке загрузки. Чтобы выполнить сортировку по любому столбцу окна, щелкните заголовок соответствующего столбца.
Загрузить символы
В столбце Состояние символов в окне Модули показано, для каких модулей загружены отладочные символы. Если здесь указано состояние Загрузка символов пропущена, Невозможно найти или открыть PDB-файл или Загрузка отключена параметром включения и исключения, вы можете загрузить символы вручную. Дополнительные сведения о загрузке и использовании символов см. в статье Указание файлов символов (.pdb) и исходных файлов.
Загрузка символов вручную
В окне Модули щелкните правой кнопкой модуль, для которого не загружены символы.
Выберите Сведения о загрузке символов, чтобы узнать, почему символы не были загружены.
Щелкните Загрузить символы, чтобы загрузить символы вручную.
Если символы не загружаются, выберите Параметры символов, чтобы открыть диалоговое окно Параметры и указать или изменить расположение для загрузки символов.
Вы можете скачать символы с общедоступных серверов символов Майкрософт или других аналогичных серверов, а также загрузить их из локальной папки на компьютере. Дополнительные сведения см. в разделе об указании расположения символов и поведения при загрузке.
Изменение параметров поведения при загрузке символов
В окне Модули щелкните правой кнопкой мыши любой модуль.
Выберите Параметры символов.
Выберите Загрузить все символы или выберите конкретные модули.
Нажмите кнопку ОК. Изменения вступят в силу при следующем сеансе отладки.
Изменение поведения загрузки символов для конкретного модуля
В окне Модули щелкните правой кнопкой мыши требуемый модуль.
В контекстном меню установите или снимите флажок Всегда загружать автоматически. Изменения вступят в силу при следующем сеансе отладки.
Использование Process Explorer для устранения неполадок и диагностики
Серия уроков по пакету утилит SysInternals
3. Использование Process Explorer для устранения неполадок и диагностики
Не так давно мы начали исследовать всевозможные вредоносные и нежелательные программы, которые могут установиться случайно, если вы не обращаете внимания на галочки при установке программного обеспечения. Многие бесплатные программы во время своей установке могут дополнительно установить стороннее ПО, которое может добавлять панели инструментов в ваши веб браузеры, показывают рекламу или делают другие неприятные вещи. И от этих программ не так просто избавиться.
Мы видели много компьютеров от известных нам людей, на которых установлено так много шпионского и рекламного ПО, что компьютер еле работает. В частности, попытка загрузить веб-браузер практически невозможна, поскольку все рекламное ПО и программное обеспечение для слежения за пользователем конкурируют за ресурсы, чтобы украсть вашу личную информацию и продать её тому, кто предложит самую высокую цену.
Поэтому, естественно, мы хотели провести небольшое расследование того, как некоторые из них работают. Данная статья написана на примере одной из них.
Мы начнём с этого, а затем покажем вам, как использовать Process Explorer для устранения ошибок, связанных с заблокированными файлами и папками, которые используются.
А затем мы завершим это ещё одним взглядом на то, как некоторые рекламные программы в наши дни прячутся за процессами Microsoft, чтобы они выглядели легитимными в Process Explorer или диспетчере задач, хотя на самом деле таковыми не являются.
Исследование вредоносного ПО
Примером рекламного и нежелательного ПО является Conduit — раздражающая и стойкая к удалению программа, поразившая многие компьютеры. Она пряталась в установщиках с бесплатными программами, причём даже если отказаться, эта программа всё равно иногда устанавливалась.
Conduit устанавливает то, что они называют «Search Protect», которая, по их утверждению, предотвращает внесение вредоносными программами изменений в ваш браузер. О чем они не упоминают, так это о том, что это также не позволяет вам вносить какие-либо изменения в браузер, если вы не используете их панель Search Protect для внесения этих изменений, о которой большинство людей не узнает, поскольку она скрыта в панели задач.
Conduit не только перенаправит все ваши поисковые запросы на свою собственную страницу Bing, но и установит её в качестве вашей домашней страницы. Можно было бы предположить, что Microsoft платит им за весь этот трафик в Bing, поскольку они также передают в строке запроса некоторые аргументы типа?pc=conduit.
Забавный факт: компания, стоящая за этим куском мусора, стоит 1,5 миллиарда долларов, и JP Morgan вложил в неё 100 миллионов долларов. Быть злом выгодно.
Conduit захватывает страницу новой вкладки… Но как?
Взлом вашей поисковой и домашней страницы тривиален для любого вредоносного ПО — именно здесь Conduit вступает в бой и каким-то образом переписывает страницу новой вкладки, чтобы заставить её отображать Conduit, даже если вы измените все настройки.
Вы можете удалить все свои браузеры или даже установить браузер, который у вас не был установлен раньше, например Firefox или Chrome, и Conduit все равно сможет захватить страницу быстрого доступа.

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

Но как именно он это делает? Ни в один из браузеров не установлены надстройки или расширения. Нет никаких плагинов. Реестр чистый. Как они это делают?
Здесь мы обращаемся к Process Explorer, чтобы провести некоторое расследование. Во-первых, мы найдём в списке процесс Search Protect, который достаточно прост, потому что он правильно назван, но если вы не уверены, вы всегда можете открыть окно и использовать маленький значок в виде яблочка рядом с биноклем, чтобы выяснить, какой процесс принадлежит окну.

Теперь вы можете просто выбрать соответствующий процесс, который в данном случае был одним из трёх, автоматически запускаемых службой Windows, устанавливаемой Conduit. Как я узнал, что этот процесс перезапускается как служба Windows? По цвету — как мы узнали в предыдущем уроке, розовый цвет имеют службы. Вооружившись этими знаниями, я всегда мог остановить или удалить службу (хотя в этом конкретном случае вы можете просто удалить её в окне «Удаление программ» в Панели управления).
Теперь, когда вы выбрали процесс, вы можете использовать сочетания клавиш CTRL+H или CTRL+D, чтобы открыть представление Handles или представление DLLs, или вы можете использовать для этого меню View → Lower Pane View.
Примечание: в мире Windows Handle — это целочисленное значение, которое используется для уникальной идентификации ресурса в памяти, такого как окно, открытый файл, процесс или многие другие вещи. Каждое открытое окно приложения на вашем компьютере имеет, например, уникальный «дескриптор окна», который можно использовать для ссылки на него.
DLL или библиотеки динамической компоновки — это общие части скомпилированного кода, которые хранятся в отдельном файле для совместного использования несколькими приложениями. Например, вместо того, чтобы каждое приложение создавало свои собственные диалоговые окна открытия/сохранения файла, все приложения могут просто использовать общий код диалогового окна, предоставленный Windows в файле comdlg32.dll.
Просмотр списка дескрипторов в течение нескольких минут немного приблизил нас к тому, что происходит, потому что мы нашли дескрипторы для Internet Explorer и Chrome, которые в настоящее время открыты в тестовой системе. Мы определённо подтвердили, что Search Protect что-то делает с открытыми окнами браузера, но нам нужно провести дополнительное исследование, чтобы точно выяснить, что именно.

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

Интересно! Мы обнаружили здесь несколько DLL-файлов, но по какой-то странной причине ни один из этих DLL-файлов не был указан в представлении DLL для процесса Search Protect, когда мы просматривали его ранее. Может быть они и являются причиной проблемы.

Каждый раз, когда вы хотите узнать, используется ли файл DLL в настоящее время каким-либо приложением в вашей системе воспользуйтесь поиском. Чтобы открыть панель поиска, перейдите в меню Find («Поиск»), нажав CTR+F или просто кликните значок бинокля на панели инструментов. Теперь введите часть имени DLL или даже полное имя, если хотите.
Мы выбрали для поиска только начало, «SPVC», поскольку это общая часть строки для всех найденных файлов, и, конечно же, похоже, что эти библиотеки DLL загружаются непосредственно в каждый из процессов браузера, запущенных на нашем компьютере.

Щелчок по одному из элементов в списке и переход на страницу Threads («Потоки») подтвердили наши опасения. И Chrome, и Internet Explorer запускали потоки с использованием файлов SPVC32.dll или SPVC64.dll из вредоносного ПО Search Protect, и именно так они захватывали нашу новую вкладку — не путём изменения настроек, а путём перехвата браузера изнутри.
Примечание. В Windows thread (поток) — это то, для чего операционная система выделяет процессорное время. Обычно мы думаем о процессах, но технически в Windows работают только потоки, а не процессы. У некоторых процессов может быть только один поток выполнения, но у других может быть много потоков, которые все работают отдельно друг от друга, обычно управлясь с каким-либо механизмом межпроцессного взаимодействия.
Вы также можете дважды щёлкнуть любой из потоков, чтобы увидеть полный стек выполнения, что может быть полезно, чтобы увидеть, какие функции вызываются, и попытаться выяснить, в чем проблема.

Вам может быть интересно, как приложению Search Protect удалось заставить Google Chrome загрузить эту DLL, и ответ заключается в том, что Windows предоставляет функцию под названием DLL Injection. Процесс может внедрить DLL в другой процесс, а затем перехватить определённые функции API. Таким образом некоторые приложения переопределяют функции Windows или функции других приложений. Это очень сложный предмет, который мы определённо не сможем раскрыть на этом уроке, но если вы действительно хотите узнать больше, вы можете ознакомиться с этим руководством.
Также стоит отметить, что вы можете увидеть использование ЦП на поток, углубившись в детали этого уровня, что может быть очень полезно при устранении неполадок в приложении, в котором есть плагины. Вы можете использовать это, чтобы выяснить, какой конкретный файл DLL занимает слишком много времени процессора, а затем провести некоторое исследование того, к чему этот компонент принадлежит.
Работа с заблокированными файлами или папками
Поскольку маловероятно, что вы будете постоянно анализировать вредоносные программы, также полезно использовать Process Explorer для других задач. К примеру, вы можете определить, какая программа открыла файл, в результате чего вы не можете удалить, переместить или переименовать файл или папку.

Когда вы получаете ошибку «уже используется», просто перейдите в Process Explorer, откройте поиск с помощью CTRL+F или значка, а затем введите имя проблемной папки или файла (или полный путь, если имя очень расплывчатое).
Вы очень быстро увидите в списке процесс, в котором открыт ваш файл или папка, и можете дважды щёлкнуть по нему, чтобы идентифицировать процесс в списке.

В первую очередь на ум приходит просто закрыть этот процесс, но делать это не обязательно. Вы также можете щёлкнуть правой кнопкой мыши файл или папку в списке дескрипторов (используйте сочетание клавиш CTRL+H, чтобы открыть список дескрипторов) и выбрать опцию «Закрыть дескриптор». Этот ресурс теперь разблокирован!

Примечание. Если вы что-то удаляете, это отличный вариант, но если вы просто пытаетесь отредактировать или переместить этот элемент, вам, вероятно, следует открыть проблемное приложение и разобраться с ним там, чтобы не потерять никаких данных.
Изучение процессов, которые выглядят безопасными, но такими не являются
В ходе нашего исследования вредоносного ПО мы обнаружили ещё одну проблему, которая становится все более распространённой, поэтому разумно следить за ней в будущем. Что это за проблема? Вредоносное ПО скрывается за легитимными процессами Windows и хорошо справляется с этой задачей.
В приведённом ниже примере вы можете видеть, что, хотя мы использовали функцию Verified Signer для проверки этого элемента, когда мы наводим на него курсор и смотрим на полный путь, на самом деле загружается DLL, которая оказывается частью adware (рекламного ПО).
Примечание: прежде чем вы начнёте кричать о запуске антивирусной проверки, отметим, что мы это сделали, и она ни чего не нашла. Большая часть этого нежелательного, рекламного и шпионского ПО игнорируется антивирусными утилитами.

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

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

Остальная часть расследования привела к некоторым другим инструментам, которые не входят в набор SysInternals, и которые мы, вероятно, рассмотрим позже, но достаточно сказать, что это просто вредоносная программа, которая работала вместе с другим нежелательным ПО.
Важным моментом здесь является то, что вредоносное ПО способно прятаться за законными исполняемыми файлами Windows, поэтому обязательно следите за чем-либо подобным.
Process Explorer. Обзор некоторых возможностей
Process Explorer – альтернатива стандартному Task Manager-у. Эта утилита, как и многие другие утилиты Sysinternals, здорово расширяет возможности контроля и управления системой. Главное новшество только что вышедшей 14-ой версии — возможность мониторить сетевую активность процессов. Далее небольшой обзор возможностей этой утилиты, которые считаю наиболее полезными для себя.
Для справки. С 2006 года Sysinternals была приобретена Microsoft, а ключевая фигура этой компании – Марк Руссинович с тех пор работает в Microsoft. Марк известен своими утилитами, книгой Windows Internals, блогом и является признанным специалистом по архитектуре Windows.
Колонки в главном окне
Сервисы внутри svchost
При наведении курсора на svchost (процесс который хостит в себе сервисы) можно видеть перечень сервисов – довольно полезная фича.
Суммарные графики активности, процесс с максимальной активностью
Сверху основного окна расположены графики основных суммарных параметров – память, дисковая, сетевая и CPU активность. При перемещении курсора по истории параметра, показан процесс который дал максимальный вклад в это значение в данный момент времени. Кроме того в тултипе есть информация о мгновенном значении параметра (зависит от частоты обновления). На следующей картинке — график сетевой активности.
В окне «system information» графики собраны вместе, здесь удобнее смотреть корреляцию параметров.
Суммарные графики активности в трее, процесс с максимальной активностью
Очень удобная фича – выведение в трей иконок с графиками суммарной активности. Там могут быть графики дисковой активности, CPU и память. Я использую первые два – поглядываю туда, при возникновении вопросов достаточно навести курсор и узнать какой процесс дает максимальный вклад в параметр. К сожалению сетевую активность туда нельзя выставить, я надеюсь это вопрос времени.
Сетевые соединения процесса
В свойствах процесса в закладке TCP/IP можно посмотреть текущие активные соединения. К сожалению сетевая активность по ним не видна, эта функциональность пока доступна в другой утилите – tcpview.
Потоки процесса, их активность, стек потока с загрузкой символов
В свойствах процесса в закладке threads видны все его потоки и загрузка CPU по потокам. Допустим хочется рассмотреть стек потока, который интенсивно что-то делает или висит. Для этого сперва надо его распознать, допустим по загрузке CPU, потом полезно приостановить процесс, чтобы спокойно рассмотреть его состояние — это можно сделать прямо в этом окне по кнопке “suspend”. Далее выделяем поток и нажимаем “stack”. В большинстве случаев стек будет начинаться в недрах системы и обрываться не совсем понятным образом. Дело в том, что не имея отладочной информации по системным библиотекам не удастся корректно развернуть стек и разобраться в нем. Есть решение – нужно сконфигурировать доступ с символьной информации с сайта Microsoft. Надо проделать несколько шагов:
Информация по использованию памяти в системе
В окне «system information» закладка «memory». Здесь есть два графика – commit и physical. Physical – использование физической памяти без учета файлового кэша, под который уходит все что остается. Commit – сколько памяти выделено для процессов включая используемую виртуальную память. Под графиками в разделе «Commit Charge» есть поля Limit и Peak. Limit определяется суммой физической и виртуальной памяти, т.е. это максимальный суммарный объем памяти, который может выделить система. Peak – это максимум графика Commit за время работы утилиты. Процентные соотношения Current/Limit и Peak/Limit удобны для быстрой оценки насколько состояние системы приближалось к критическому лимиту по доступной памяти.
Handles и DLL процесса
В главном окне можно включить разделитель и снизу отображать DLL или handles выделенного процесса. При борьбе с вирусами и отладке программ это бывает очень полезно. На картинке — список handles для opera, первый handle файловой системы – это flash ролик в временном каталоге.
Для DLL можно добавить колонку с полным путем к образу, отсортировав по нему, проанализировать нет ли каких подозрительных модулей. На картинке видно, что подключен модуль от Logitech, есть подозрение что это что-то типа хука внедряющегося во все процессы. Следующим пунктом посмотрим где он еще встречается.
Поиск handles и DLL
Поиск по имени handle или DLL во всех процессах. Вводим имя DLL от Logitech из предыдущего пункта и убеждаемся что подключается он почти везде.
Другой пример – надо понять, кто блокирует файл или работает с папкой. Вводим часть пути и находим все процессы, которые открыли подобные объекты системы. Можно щелкнуть на элементе из списка и перейти к процессу, при этом будет подсвечен соответствующий handle или DLL.
PS Для отображения некоторых полей (например сетевая статистика) требуются административные привилегии. Повысить привилегии в уже запущенном Process Explorer можно с помощью команды в меню File. Только при наличии таких привилегий есть возможность добавить такие колонки. Я считаю такое поведение неверным, т.к. скрывает потенциальные возможности приложения от пользователя. Если поля добавлены и при следующем запуске нет административных прав, то они будут пустыми. Можно задать ключ «/e» в командной строке, чтобы форсировать поднятие привилегий при старте Process Explorer.


















