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

Как выгрузить драйвер 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

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

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


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

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

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

C:\WINDOWS\system32>fltmc

Имя фильтра Количество экземпляров Высота Рамка
------------------------------ ------------- ------------ -----
ПРОЦМОН23 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самне может выгрузить свой собственный драйвер без перезагрузки, я думаю, можно с уверенностью предположить, что вы тоже не сможете его выгрузить.

решение2

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

Чтобы избежать этого, перезагрузите компьютер с помощью этой команды, запущенной от имени администратора:

shutdown /r /f /t 0

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

решение3

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

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

fltmc filters

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

изображение

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

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

Fltmc unload PROCMON24

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

изображение2

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

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

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

решение4

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

Зависимый Ходок

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

Связанный контент