Как выгрузить драйвер Process Monitor без перезагрузки?

2028
James

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

08:06:46: Starting BattlEye Service...  08:06:49: Launching game... 08:07:07: Disallowed driver: "\??\C:\Windows\system32\Drivers\PROCMON23.SYS". Please unload it or reboot your system. 

Драйвер остается загруженным после закрытия Process Monitor, и, похоже, нет возможности его выгрузить.

На несколько других вопросов есть ответы о выгрузке драйверов с помощью net stopили sc stop, но драйвер ProcMon не является службой, поэтому это не работает. Я также пытался заглянуть в Диспетчер устройств и включить «Показывать скрытые устройства», но ни одна из записей не связана с ProcMon. Я не могу удалить файл драйвера, так как он на самом деле отсутствует в файловой системе; ProcMon сохраняет файл в своем исполняемом файле и извлекает его по мере необходимости.

Мой вопрос не является дубликатом этого вопроса, который касается аналогичной проблемы, когда драйвер сохраняется после перезагрузки. У меня вопрос по поводу выгрузки драйвера без перезагрузки.

1

3 ответа на вопрос

2
grawity

Стандартные драйверы - это сервисы, и вы действительно можете управлять ими через netи sc. (Например, обратите внимание: sc query beepостановка «звукового» драйвера является обычным способом отключения встроенного динамика ПК.)

В более ранних версиях Process Monitor (вероятно, до 2.3, когда он все еще имел поддержку Windows XP), он устанавливал «устаревший» драйвер устройства, который был виден через scдиспетчер устройств и т. Д.


Текущие версии Process Monitor, по-видимому, удаляют конфигурацию драйвера / службы из реестра сразу после запуска драйвера. Вы можете убедиться в этом, наблюдая за ProcMon . Можно вручную повторно добавить службу с типом 2 (драйвер FS ядра), и она сразу же будет отображаться как уже запущенная.

Однако служба также сообщит «NOT_STOPPABLE» и откажется от любых попыток остановки.

Кроме того, PROCMON23 теперь регистрируется как драйвер минифильтра файловой системы через диспетчер фильтров (FltDrv). Вы можете увидеть это в выходных данных fltmc, но попытка внешней выгрузки также не удалась (возможно, потому что у драйвера нет процедуры выгрузки):

C: \ WINDOWS \ system32> fltmc  Имя фильтра Num Instances Altitude Frame ------------------------------ ------------- ------- ----- ----- PROCMON23 0 385200 0 WdFilter 4 328010 0 storqosflt 0 244000 0 wcifs 1 189900 0 ...  C: \ WINDOWS \ system32> fltmc выгрузить PROCMON23  Не удалось выгрузить с ошибкой: 0x801f0010 Не отсоединяйте фильтр от объема в это время. 

Так как «официальный» инструмент CLI не может удалить фильтр из FltMgr, а сам FltMgr является «критическим» драйвером, который нельзя перезапустить без перезагрузки, может показаться, что нет способа выгрузить PROCMON23 или PROCMON24.


Но самое интересное: выполнив вышеуказанные проверки с помощью procmon 3.40, я обнаружил, что последняя версия на сайте - 3.50 (в которой используется более новый драйвер PROCMON24). После запуска новой версии мне сообщили, что в системе уже установлена ​​более старая версия драйвера, и я должен перезагрузиться.

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

Учитывая, сколько бесполезных поисков я уже проделал, это все больше и больше похоже на ответ. Тем не менее, я собираюсь подождать некоторое время, прежде чем принять это, на тот случай, если кто-то знает путь и случайно увидит это без принятых ответов и взглянет. James 5 лет назад 0
0
harrymc

Проблемный PROCMON23.SYSдрайвер фильтра устанавливается ProcMon при его запуске. Если файл C:\Windows\system32\Drivers\PROCMON23.SYS не существует в то время, ProcMon запишет его. Сам PROCMON23.SYSфайл включен как бинарный ресурс в исполняемый файл ProcMon.

Вы можете перечислить все работающие драйверы фильтров по:

fltmc filters 

и на моем компьютере это дает:

image

Как видите, моя версия Process Monitor новее вашей (24 вместо 23).

Обычно драйвер фильтра может быть удален такой командой, как:

Fltmc unload PROCMON24 

Однако в этом случае это приводит к повышению уровня командной строки:

image2

Ошибка выгрузки 0x801f0010 - типичная ошибка для драйвера мини-фильтра, в котором нет процедуры выгрузки.

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

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

Как и при обычном закрытии ProcMon, это не работает. Драйвер по-прежнему загружается в соответствии с [DriverView] Battleye и NirSoft (https://www.nirsoft.net/utils/driverview.html). James 5 лет назад 0
Это закрывает как `Procmon.exe`, так и` Procmon64.exe`. Кажется, вы включили ведение журнала загрузки, так что отмените это и перезагрузите компьютер. harrymc 5 лет назад 0
Нет, ведение журнала загрузки не включено. Я дважды проверил в ВМ; загрузка и запуск Process Monitor в новой системе и его закрытие, как обычно, так и с флагом / terminate, приводит к тому, что драйвер не выгружается. James 5 лет назад 0
Попробуйте это: загрузитесь в безопасном режиме, удалите Process Monitor, переименуйте `\ C: \ Windows \ system32 \ Drivers \ PROCMON23.SYS`, если все еще там, перезагрузите компьютер. Это избавится от этого? harrymc 5 лет назад 0
Также кажется, что вы не используете последнюю версию. harrymc 5 лет назад 0
Похоже, что ProcMon устанавливает `PROCMON23.SYS`. Я думаю, что вы должны быть в состоянии использовать вышеуказанный метод, чтобы избавиться от него, но он вернется снова, если вы запустите ProcMon, и как только он будет установлен, избавиться от боли будет сложно. harrymc 5 лет назад 0
Для выгрузки драйвера достаточно регулярной перезагрузки, так как ProcMon загружает только тот драйвер, который запускает. Тем не менее, я пытаюсь найти способ выгрузить его без перезагрузки. James 5 лет назад 0
Вы можете заменить PROCMON23.SYS безвредным файлом, используя описанный выше метод, поскольку, вероятно, Procmon только проверяет его наличие, но в этом случае ProcMon, скорее всего, не будет работать. harrymc 5 лет назад 0
Я провел еще несколько исследований и переписал свой ответ. harrymc 5 лет назад 0
-1
Leptoid

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

Зависимость Уокер

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

Похожие вопросы