Предыстория: Система Windows 10 22H2. Сидел, работал. В какой-то момент понадобилось отлучиться, жму Win+L для блокировки, а оно не блокируется. Через Win-меню тоже блокировка не работает, просто ничего не происходит. Попробовал вместо этого сделать Switch user — система показала чёрный экран и зависла наглухо. Вывести из этого состояния не удалось, пришлось грохать по питанию. После перезагрузки обнаружил, что Process Hacker потерял практически всю оцветовку процессов и не показывает некоторые детали (такие как уровень Elevation, Integrity, имя аккаунта, от которого запущен процесс, и пр.). Если в настройках отключить использование его драйвера, то оцветовка и информация возвращаются, но для большинства сервисных процессов Elevation остаётся N/A. То есть похоже, что проблема во взаимодействии с драйвером, но не пойму, что это может быть за проблема и как её чинить.
Все файлы ProcHacker'а на диске не побились, побитово идентичны заархивированному дистрибутиву. Настройки сбрасывать пытался, не помогло. Драйвер kprocesshacker.sys в системе загружен и работает (по крайней мере, согласно выводу sc query). Принудительно остановить и рестартануть его не получилось, на sc stop мне выдаётся 1052: The requested control is not valid for this service. Удалил ветку реестра, переименовал файл драйвера, перезагрузился, потом вернул имя драйвера и запустил ProcHacker, чтобы он заново начисто установил его. Драйвер установился, запустился, но ProcHacker по-прежнему не хочет отображать информацию.
Здравствуйте, CaptainFlint, Вы писали:
CF>Чем может быть вызвано подобное поведение и что можно ещё попробовать для починки? Переустановка системы не вариант.
Мне не нравится начало — не блокируется, не работает Switch User. Едва ли это сделал Process Hacker. Скорее проблема в системе.
Я бы первым делом запустил Process Explorer и выяснил, показывает ли он нормально хоть один из параметров, который Process Hacker не показывает.
Кстати, после reboot блокировка и Switch User восстановились ?
И еще — нет ли чего-то подозрительного в Event Viewer ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Мне не нравится начало — не блокируется, не работает Switch User. Едва ли это сделал Process Hacker. Скорее проблема в системе.
PD>Я бы первым делом запустил Process Explorer и выяснил, показывает ли он нормально хоть один из параметров, который Process Hacker не показывает.
PD>Кстати, после reboot блокировка и Switch User восстановились ?
Нет-нет, понятно, что поломавшаяся блокировка — это было что-то системное. У меня там незадолго до этого ещё игрушка одна крэшнулась (непонятно, сама по себе или по внешним причинам), могла что-то не подчистить; плюс другой странный глюк проявился, на который я поначалу не обратил внимания; в общем, было ясно, что пора перезагружаться, но решил проверить, найдётся ли способ заблокировать систему в той ситуации. Process Hacker при этом был запущен и всё отображал корректно. После перезагрузки блокировка и Switch user починились; и вообще каких-то дополнительных проблем пока не обнаружил (не считая поломки Process Hacker).
Process Explorer всё показывает нормально. Но у него же свой драйвер.
PD>И еще — нет ли чего-то подозрительного в Event Viewer ?
После перезагрузки пролистал, ничего привлекающего внимание не нашёл.
Здравствуйте, CaptainFlint, Вы писали:
CF>Process Explorer всё показывает нормально. Но у него же свой драйвер.
Конечно. Но данные из одного источника — ОС. Раз PE работает нормально, значит, дело не в ОС скорее всего.
В сети есть информация, как удалить Process Hacker. Посмотри, может поможет.
И еще. Причиной таких фокусов с цветами была в свое время утечка GDI ресурсов. Когда их количество в одном из процессов достигало 10000, на экране творилось черт знает что. Не знаю, починили ли и сомневаюсь, что это причина в данном случае. И все же проверь через Task Manager
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>В сети есть информация, как удалить Process Hacker. Посмотри, может поможет.
Что-то не удаётся нагуглить, всё забито рекламой всяких супер-пупер-удаляторов. Но я там просто не вижу, что может требовать какого-то хитрого удаления. Ветку драйвера в CurrentControlSet\Services я уже прибил. Помнится, раньше для софтварных драйверов создавались какие-то странные ветки в CurrentControlSet\Enum\Root\LEGACY_..., но в текущей системе я там ничего подобного не вижу. Поиск упоминаний по всему реестру тоже ничего не даёт. И после такого вот состояния я перезагружал систему и пробовал запускать ProcHacker снова, с установкой драйвера. Результат не менялся.
PD>И еще. Причиной таких фокусов с цветами была в свое время утечка GDI ресурсов. Когда их количество в одном из процессов достигало 10000, на экране творилось черт знает что. Не знаю, починили ли и сомневаюсь, что это причина в данном случае. И все же проверь через Task Manager
Так эта поломка сразу после перезагрузки проявилась (у меня ProcHacker в автозагрузке, с админ-правами стартует), не мог какой-то процесс сразу вот так взять и всё мгновенно сожрать. Ну, в смысле, мог, но маловероятно, и проявилось бы раньше. Плюс я после этого ещё пару раз перезагружался. Но на всякий случай глянул — максимум полторы тысячи GDI у пары процессов есть. У всех остальных — меньше тысячи.
Здравствуйте, reversecode, Вы писали:
R>скачайте исходники и посмотрите что да как
Это дело не на пять минут. Тем более, скорее всего придётся компилировать и дебажить в рантайме, так как неизвестно, какие ответы возвращаются разными функциями и какие ветки выполняются в зависимости от этих ответов.
R>а ProcessExplorer мелкософтовский как себя ведет? R>или он уже на новой винде не пашет
Наоборот, Process Explorer постоянно допиливается Руссиновичем под современные винды. Правда, я перестал его обновлять, когда он превратил красивенькую панель инструментов в какую-то жирную размазню… Но та версия, что у меня сейчас есть, работает и всё показывает.
Здравствуйте, reversecode, Вы писали:
R>после падение винды R>мог сломаться только реестр R>так что попробовать почистить все ветки реестра которые могут иметь отношение к нему
R>или в сорсах его глянуть куда он там что пишет R>или в бинарнике посмотреть R>или на глаз посерфить весь реестр
Никаких упоминаний ProcessHacker'а в реестре я не нашёл, не считая драйвера. Все настройки он пишет в AppData. По исходникам тоже не смог найти, чтобы он что-то писал в реестр помимо этой драйверной ветки.
Здравствуйте, CaptainFlint, Вы писали:
CF>Драйвер не запустился, prochacker стартанул в бездрайверном режиме. Отключение-включение галочки использования драйвера не помогло.
А в бездрайверном режиме те же артефакты ?
Вообще-то чудес не бывает. Апдейты ты на систему не ставил, это можно исключить.
Остается одно — где-то есть неверные данные.
Можно тотально посмотреть в реестре все по "Process Hacker" (или просто по "Hacker") и удалить все, что там найдется. Осторожно, конечно!
Аналогично в AppData
Еще стоит проверить контрольные точки восстановления. Не запускать пока что процедуру восстановления, а просто посмотреть, какие продукты были затронуты после ее создания, там такое покажут. Апдейты ОС ты не ставил, а приложения какие-то ставил или обновлял ?
Здравствуйте, Pavel Dvorkin, Вы писали:
CF>>Драйвер не запустился, prochacker стартанул в бездрайверном режиме. Отключение-включение галочки использования драйвера не помогло.
PD>А в бездрайверном режиме те же артефакты ?
В safe mode запускается только в бездрайверном, в том числе если включить опцию использования драйвера. Полагаю, он пытается установить-стартануть драйвер, обламывается и делает fallback в бездрайверный режим. Информация при этом отображается такая же, как в обычной загрузке в бездрайверном режиме. То есть оцветовка есть, информация о процессах есть, но для части системных процессов в колонке Elevation отображается N/A.
PD>Вообще-то чудес не бывает. Апдейты ты на систему не ставил, это можно исключить.
PD>Остается одно — где-то есть неверные данные.
Я подозреваю, что принудительный сброс машины мог какие-то данные где-то подпортить. Но какие и где, ума не приложу, да ещё чтоб такой избирательный эффект дало.
PD>Можно тотально посмотреть в реестре все по "Process Hacker" (или просто по "Hacker") и удалить все, что там найдется. Осторожно, конечно! PD>Аналогично в AppData
Это я уже. В AppData (да и вообще по всему диску по proc.*hacker) нашлась только папочка с настройками программы, я уже пробовал её переименовывать и запускать прогу с нулевыми настройками. На работоспособность драйверного режима это не повлияло.
В реестре по слову Hacker, кроме драйвера, нашлась лишь пара упоминаний исполняемого файла программы: в AppCompat и в ветке Services\bam\State\UserSettings\USER_ID. Удалил обоих (при закрытом Хакере, разумеется), но тоже никаких видимых изменений это не дало.
PD>Еще стоит проверить контрольные точки восстановления. Не запускать пока что процедуру восстановления, а просто посмотреть, какие продукты были затронуты после ее создания, там такое покажут. Апдейты ОС ты не ставил, а приложения какие-то ставил или обновлял ?
Последняя точка была очень задолго до сегодня. Если это выстрелило что-то из тогдашних обновлений, оно бы выстрелило намного раньше. Я обычно обновления системы, драйверов и крупных программ ставлю, лишь когда по той или иной причине приходится перезагружаться. А так комп у меня работает с непрерывным аптаймом (иногда с уходом в hibernate). Бывает, обновляю всякие мелкие портативные прожки, которые никак не могут оказывать общесистемное влияние (типа KeePass, Total Commander, 7-zip…). Единственное исключение: где-то в районе месяца или двух назад я обновил графический драйвер (nVidia), без перезагрузки, и точку восстановления оно не создало. Теоретически допускаю, что этот сбой в ProcHacker'е может быть каким-то отложенным последствием обновления видеодрайвера, по какой-то причине проявившимся лишь после перезагрузки. Но учитывая, что драйверный инсталлятор никакой перезагрузки не потребовал, я предполагаю, что он все файлы смог обновить в рантайме, и эффект должен был бы проявиться раньше, хотя бы при рестарте ProcHacker'а.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Попробовал сам. Впечатление такое, что все так же, как и у тебя
PD>Image: prochacker.png
PD>Или нет ?
Да, это картинка — как у меня, когда запущено без драйвера. Но моя проблема заключается в некорректной работе драйверного режима, а не бездрайверного.
Раньше я пользовался только драйверным режимом, и программа показывала всё то же самое, что на этом скрине, но без всяких N/A, вся информация была полностью доступна для всех процессов. То есть драйверный должен быть (и был!) более полноценным, чем бездрайверный. А сейчас драйверный режим стал сильно урезанный, многой информации нет вообще (см. скрины из первого поста).
(Если что, это Options — Advanced — Enable kernel-mode driver.)
CF>Да, это картинка — как у меня, когда запущено без драйвера. Но моя проблема заключается в некорректной работе драйверного режима, а не бездрайверного. CF>Раньше я пользовался только драйверным режимом, и программа показывала всё то же самое, что на этом скрине, но без всяких N/A, вся информация была полностью доступна для всех процессов. То есть драйверный должен быть (и был!) более полноценным, чем бездрайверный. А сейчас драйверный режим стал сильно урезанный, многой информации нет вообще (см. скрины из первого поста).
CF>(Если что, это Options — Advanced — Enable kernel-mode driver.)
Я нашел еще раньше сам это. Галочка стоит. Запущено с правами администратора.
Отсортировал сейчас по Elevation
Elevation N/A для всех процессов, запущенных от SYSTEM или LOCAL SERVICE. Не имеет для них смысла. А для всех процессов, запущенных от моей УЗ , стоит либо Full либо Limited. Собственно, Full для FAR (я его запускаю с правами админа) и его потомков, для остальных Limited
Отличие от твоего в том, что касается User Name. У меня все нормально при запуске от админа, а без прав админа — много пустых строк. У тебя пусто в драйверном варианте. Это действительно странно.
Ну и explorer и его потомки. Для них у тебя N/A, у меня нормально.
А Process Explorer показывает User Name нормально ?
Здравствуйте, Pavel Dvorkin, Вы писали: PD>Elevation N/A для всех процессов, запущенных от SYSTEM или LOCAL SERVICE. Не имеет для них смысла. А для всех процессов, запущенных от моей УЗ , стоит либо Full либо Limited. Собственно, Full для FAR (я его запускаю с правами админа) и его потомков, для остальных Limited PD>Отличие от твоего в том, что касается User Name. У меня все нормально при запуске от админа, а без прав админа — много пустых строк. У тебя пусто в драйверном варианте. Это действительно странно. PD>Ну и explorer и его потомки. Для них у тебя N/A, у меня нормально. PD>А Process Explorer показывает User Name нормально ?
Да, в нём всё как раньше работало, так и продолжает работать сейчас.
Я тут погуглил и обнаружил, что, оказывается, знамя Process Hacker'а подхватили под новым именем System Informer. Стабильных билдов пока нет, скачал "ночнушку", запустил. В бездрайверном режиме то же, что у бездрайверного Process Hacker'а (то есть всё нормально, за исключением Elevation=N/A для сервисных процессов); переключил в драйверный — и в нём всё отлично работает, как раньше работал ProcHacker (если верить моим воспоминаниям), а именно: расцветовка есть, все поля есть, Elevation показан для всех. Кстати, совершенно не уверен в "не имеет смысла" для сервисных юзеров. Потому как нашёл пару процессов svchost, оба от имени LOCAL SERVICE, но у одного Elevation=Yes, у другого No. Хотя проинтерпретировать это затрудняюсь.
Скриншот
То есть сабжевая проблема — однозначно какой-то баг, привязанный конкретно к ProcHacker'у на непонятном уровне. Со стороны системы вся информация доступна (что, впрочем, уже подтверждалось выше).
Здравствуйте, CaptainFlint, Вы писали:
CF>Я тут погуглил и обнаружил, что, оказывается, знамя Process Hacker'а подхватили под новым именем System Informer. Стабильных билдов пока нет, скачал "ночнушку", запустил. В бездрайверном режиме то же, что у бездрайверного Process Hacker'а (то есть всё нормально, за исключением Elevation=N/A для сервисных процессов); переключил в драйверный — и в нём всё отлично работает, как раньше работал ProcHacker (если верить моим воспоминаниям), а именно: расцветовка есть, все поля есть, Elevation показан для всех. Кстати, совершенно не уверен в "не имеет смысла" для сервисных юзеров. Потому как нашёл пару процессов svchost, оба от имени LOCAL SERVICE, но у одного Elevation=Yes, у другого No. Хотя проинтерпретировать это затрудняюсь.
CF>Чем может быть вызвано подобное поведение и что можно ещё попробовать для починки? Переустановка системы не вариант.
(паранойа моде ON)
Подхватил кернел-мод руткит, который поставил свой глючный драйвер.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
O>(паранойа моде ON) O>Подхватил кернел-мод руткит, который поставил свой глючный драйвер.
Который ломает взаимодействие конкретно с kprocesshacker.sys, но не с его форком SystemInformer.sys? Нет, конечно, всё случается под луной, но слишком уж локализованная поломка для подобных гипотез.