26 сентября 2013 в 13:57
Process Explorer vs Process Hacker
Многим людям рано или поздно приходит в голову мысль, что стандартный менеджер процессов Windows весьма слаб по функционалу. Начинаются поиски альтернативы, которые в основном тут же и заканчиваются при обнаружении Process Explorer от Марка Руссиновича. Вот и Хабр даже советует эту программу.
Что тут можно сказать? Конечно, Process Explorer — это хорошая программа. Однако, не идеал. Именно в пику её неидеальности существует не только бесплатная, но и свободная альтернатива — Process Hacker. А теперь мы детально и по пунктам рассмотрим, почему Process Hacker не просто «чуть-чуть лучше», а лучше на порядок, лучше на столько, что переводит программу для продвинутого пользователя в класс инструмента системного программиста или администратора.
Ради сокращения количеств букв я буду называть Process Explorer (от Марка Руссиновича) — PE, а Process Hacker (от комьюнити) — PH.
Я не яростный фанат свободного ПО: если проприетарная программа делает, что мне нужно, а свободная — нет, то первая лучше. Однако при прочих равных (а в данном случае PH точно не хуже) свободное ПО даёт больше пространства для манёвра. PH живёт на Sourceforge со всеми вытекающими преимуществами, весьма живым форумом и частыми релизами.
Обе программы удобнее всего использовать в виде portable-версий.
PE требует прочитать и согласиться с лицензией.
PH просто запускается и работает.
PE не умеет проверять наличие обновлений
PH умеет проверять наличие обновлений
Есть у обеих программ. По-дефолту PE показывает там только загрузку CPU в User Mode. По-дефолту PH показывает загрузку CPU и в UserMode и в Kernel Mode.
О стиле цветовой схемы можно спорить, но лично мне красный цвет на чёрном фоне (у PH) более заметен, чем светло-зелёный на белом (у PE).
У PE можно включить до 7 иконок в трее с разной полезной информацией
У PH можно включить до 8 иконок в трее с разной полезной информацией
Абсолютно незаменимая вещь в PH — уведомления о старте\остановке\установке сервисов и драйверов. При разработке такого ПО цикл «установить, запустить, проверить, остановить, удалить» приходится делать по 20 раз на день — и с PH сразу видишь, удачно идёт дело или нет, нет нужды лезть в «Службы» или «Диспетчер устройств», нажимать там «Обновить», ждать изменений.
Обе программы позволяют через контекстное меню иконки в трее открывать главное окно, перезагружать\выключать компьютер, открывать окно системной информации. Но PH ещё позволяет управлять вышеупомянутыми нотификациями и десятком процессов (из топа загрузки CPU).
Окна System Information в обеих программах очень похожи и по функционалу и по дизайну. PE разбивает информацию по вкладкам, PH — открывает вкладки по клику на диаграммах в главном окне. PH показывает чуть-чуть больше информации (название процессора, общий объём физической памяти и т.д.).
Интерфейсы программ выглядят достаточно схоже: дерево процессов и там и там.
Отметим, однако, нюансы.
Примерно равное количество параметров у обеих программ. У PE они распределены по группам, у PH — по алфавиту. В итоге если вы знаете точное название параметра — его быстрее найти в PH, если только какой области он касается (память, диск, сеть) — быстрее в PE. Кроме того надо признать, что PE больше знает о внутренних параметрах .NET-процессов (PH тоже идёт в этом направлении, есть специальный плагин для счётчиков .NET)
Нет в PE
Есть в PH, поддерживает ключевые слова для поиска определённых типов процессов
Есть в PE
Нет в PH
Это тот редкий случай, когда что-то есть в PE и нет в PH. Давайте, однако, посмотрим как они выглядят:
Подписей нет, осей нет, при беглом взгляде не понятно ничего. Для получения значимой информации всё-равно нужно открывать окно системной информации, а вот там уже PH впереди по информативности.
В PH есть очень нужный пункт меню «Run as...». С тех пор как в контекстном меню проводника Windows этот пункт исчез, уступив место «Run as administrator» его очень не хватало.
В PE этого пункта нет.
Обратите внимание, в PE здесь есть кнопки «Search» и «Cancel». В PH — только Find. Это потому, что PE может искать ну о-о-о-очень долго и иногда поиск правда надо отменять. PH ищет просто мгновенно. Ему кнопка «Cancel» не нужна.
PE позволяет нажав на кнопку с изображением мишени найти процесс по его окну.
PH позволяет найти не только процесс, но и поток, отвечающий за обработку сообщений данному окну. Кроме того найденное окно можно сразу закрыть одной кнопкой.
Справедливости ради надо признать что иконка у PE лучше (похожа на соответствующую иконку в Spy++)
Не будем останавливаться на общих возможностях, взглянем только на то, что есть в PH и нет в PE:
PE считает, что его дело только обычные процессы
PH является крайне удобным инструментом работы с сервисами и драйверами.
На специальной вкладке Services главного окна можно просматривать список процессов и драйверов, их статус, можно их останавливать, запускать, удалять, просматривать и менять их свойства.
Крайне полезный инструмент для системного программиста под Windows (особенно совместно с возможностью включить для иконки в трее нотификации об изменении в списке сервисов). А еще в меню Tools можно создать новый сервис.
PE позволяет просмотреть параметры сетевой и дисковой активности процесса, позволяет посмотреть общую производительность дисковой и сетевой подсистем.
PH кроме вышеуказанного имеет в главном окне две крайне полезные вкладки «Network» и «Disk», показывающие общую сетевую и дисковую активность процессов.
Справедливости ради нужно признать, что в современных версиях Windows нечто подобное (хотя и не так удобное) показывает штатный инструмент Resource Monitor.
PE цельный и неделимый
PH модульный, поддерживает плагины (и значительная часть описанного здесь функционала именно плагинами и реализована).
Группировка информации по вкладкам в программам слегка отличается, сравнивать «в лоб» трудно.
В целом можно сказать, что объём предоставляемой информации и удобство пользования примерно одинаковы. Однако есть архиважная деталь: PE в этом окне иногда врёт. Причём, как я предполагаю, не из-за багов, а по маркетинговым причинам (а уж это вообще никуда не годится). Детально этот вопрос я разбирал вот в этом топике, кому интересно — можете ознакомиться.
Обе программы позволяют просмотреть список DLL в адресном пространстве процесса. PE показывает их в нижней части главного окна (при включении соответствующей панели), PH показывает их во вкладке в окне информации о процессе. При двойном клике на библиотеке и там и там отображается информация о ней.
И вот здесь мы снова видим почему PE является просто прикладной утилитой для продвинутого юзера, а PH — инструментом программиста. Если PE показывает только общую информацию о библиотеке и список строк в ней, то PH показывает полный список импортируемых и экспортируемых функций. Для этого больше не нужны отдельные дизассемблеры!
Не будем впадать в идолопоклонничество и посмотрим что в PE лучше:
Как вы и сами могли заметить, PH — этот тот случай когда в общем и так неплохую программу взяли и сделали ещё лучше, ещё дружелюбнее и ещё полезнее. Направление развития PH задавалось сообществом, детские баги быстро фиксились, упор делался на полезность инструмента не только обычному пользователю, но и программисту с сисадмином.
Утилита полезная, пользуйтесь на здоровье.
Что тут можно сказать? Конечно, Process Explorer — это хорошая программа. Однако, не идеал. Именно в пику её неидеальности существует не только бесплатная, но и свободная альтернатива — Process Hacker. А теперь мы детально и по пунктам рассмотрим, почему Process Hacker не просто «чуть-чуть лучше», а лучше на порядок, лучше на столько, что переводит программу для продвинутого пользователя в класс инструмента системного программиста или администратора.
Термины
Ради сокращения количеств букв я буду называть Process Explorer (от Марка Руссиновича) — PE, а Process Hacker (от комьюнити) — PH.
Opensource
Я не яростный фанат свободного ПО: если проприетарная программа делает, что мне нужно, а свободная — нет, то первая лучше. Однако при прочих равных (а в данном случае PH точно не хуже) свободное ПО даёт больше пространства для манёвра. PH живёт на Sourceforge со всеми вытекающими преимуществами, весьма живым форумом и частыми релизами.
Установка
Обе программы удобнее всего использовать в виде portable-версий.
PE требует прочитать и согласиться с лицензией.
PH просто запускается и работает.
Обновление
PE не умеет проверять наличие обновлений
PH умеет проверять наличие обновлений
Иконки в трее
Есть у обеих программ. По-дефолту PE показывает там только загрузку CPU в User Mode. По-дефолту PH показывает загрузку CPU и в UserMode и в Kernel Mode.
О стиле цветовой схемы можно спорить, но лично мне красный цвет на чёрном фоне (у PH) более заметен, чем светло-зелёный на белом (у PE).
У PE можно включить до 7 иконок в трее с разной полезной информацией
У PH можно включить до 8 иконок в трее с разной полезной информацией
Уведомление о процессах\сервисах\драйверах
Абсолютно незаменимая вещь в PH — уведомления о старте\остановке\установке сервисов и драйверов. При разработке такого ПО цикл «установить, запустить, проверить, остановить, удалить» приходится делать по 20 раз на день — и с PH сразу видишь, удачно идёт дело или нет, нет нужды лезть в «Службы» или «Диспетчер устройств», нажимать там «Обновить», ждать изменений.
Контекстное меню иконок в трее
Обе программы позволяют через контекстное меню иконки в трее открывать главное окно, перезагружать\выключать компьютер, открывать окно системной информации. Но PH ещё позволяет управлять вышеупомянутыми нотификациями и десятком процессов (из топа загрузки CPU).
System Information
Окна System Information в обеих программах очень похожи и по функционалу и по дизайну. PE разбивает информацию по вкладкам, PH — открывает вкладки по клику на диаграммах в главном окне. PH показывает чуть-чуть больше информации (название процессора, общий объём физической памяти и т.д.).
Главное окно
Интерфейсы программ выглядят достаточно схоже: дерево процессов и там и там.
Отметим, однако, нюансы.
Раскраска
- Раскраска есть в обоих программах, но если в PE она по столбикам, то в PH — по строкам. В итоге в PH удобно взглядом проследить по горизонтали все данные одного процесса, а в PE — по вертикали использование какого-нибудь ресурса разными процессами.
- Настройка раскраски есть и там и там, но если PE настраиваются цвета для 8 типов процессов, то в PH — для 16 (плюс некоторые опции типа длительности подсветки процесса).
Выбор столбиков с информацией о процессе
Примерно равное количество параметров у обеих программ. У PE они распределены по группам, у PH — по алфавиту. В итоге если вы знаете точное название параметра — его быстрее найти в PH, если только какой области он касается (память, диск, сеть) — быстрее в PE. Кроме того надо признать, что PE больше знает о внутренних параметрах .NET-процессов (PH тоже идёт в этом направлении, есть специальный плагин для счётчиков .NET)
Фильтр по имени процесса
Нет в PE
Есть в PH, поддерживает ключевые слова для поиска определённых типов процессов
Диаграммы производительности на тулбаре
Есть в PE
Нет в PH
Это тот редкий случай, когда что-то есть в PE и нет в PH. Давайте, однако, посмотрим как они выглядят:
Подписей нет, осей нет, при беглом взгляде не понятно ничего. Для получения значимой информации всё-равно нужно открывать окно системной информации, а вот там уже PH впереди по информативности.
«Run as...»
В PH есть очень нужный пункт меню «Run as...». С тех пор как в контекстном меню проводника Windows этот пункт исчез, уступив место «Run as administrator» его очень не хватало.
В PE этого пункта нет.
Окно «Find Handles or DLLs»
Обратите внимание, в PE здесь есть кнопки «Search» и «Cancel». В PH — только Find. Это потому, что PE может искать ну о-о-о-очень долго и иногда поиск правда надо отменять. PH ищет просто мгновенно. Ему кнопка «Cancel» не нужна.
Поиск окна
PE позволяет нажав на кнопку с изображением мишени найти процесс по его окну.
PH позволяет найти не только процесс, но и поток, отвечающий за обработку сообщений данному окну. Кроме того найденное окно можно сразу закрыть одной кнопкой.
Справедливости ради надо признать что иконка у PE лучше (похожа на соответствующую иконку в Spy++)
Возможности контекстного меню процесса
Не будем останавливаться на общих возможностях, взглянем только на то, что есть в PH и нет в PE:
- Открытие места хранения бинарника по Ctrl+Enter (в PE тоже есть, но на 2 клика дальше — в окне свойств процесса)
- Отправка экзешника на Virustotal
- Detach from debugger — полезно, когда к процессу прицеплена Visual Studio, которая «подвисла» и её хочется убить без закрытия процесса
- Информационные окна по процессу: GDI Handles, Heaps, Unloaded Modules, WS Watch, Windows
- Terminator — возможность убить процесс 17-ю разными способами. Интересно понаблюдать за корректностью завершения своей программы.
- Inject DLLs: крайне полезная штука при тестировании инжектинга всяких хуков. Фактически позволяет на этапе тестирования обойтись без собственного инжектора, писать только саму инжектируемую библиотеку. Для проверки теорий и исследования — крайне полезная вещь.
Сервисы и драйвера
PE считает, что его дело только обычные процессы
PH является крайне удобным инструментом работы с сервисами и драйверами.
На специальной вкладке Services главного окна можно просматривать список процессов и драйверов, их статус, можно их останавливать, запускать, удалять, просматривать и менять их свойства.
Крайне полезный инструмент для системного программиста под Windows (особенно совместно с возможностью включить для иконки в трее нотификации об изменении в списке сервисов). А еще в меню Tools можно создать новый сервис.
Сетевая и дисковая активность процессов
PE позволяет просмотреть параметры сетевой и дисковой активности процесса, позволяет посмотреть общую производительность дисковой и сетевой подсистем.
PH кроме вышеуказанного имеет в главном окне две крайне полезные вкладки «Network» и «Disk», показывающие общую сетевую и дисковую активность процессов.
Справедливости ради нужно признать, что в современных версиях Windows нечто подобное (хотя и не так удобное) показывает штатный инструмент Resource Monitor.
Модульная архитектура
PE цельный и неделимый
PH модульный, поддерживает плагины (и значительная часть описанного здесь функционала именно плагинами и реализована).
Окно информации о процессе
Группировка информации по вкладкам в программам слегка отличается, сравнивать «в лоб» трудно.
В целом можно сказать, что объём предоставляемой информации и удобство пользования примерно одинаковы. Однако есть архиважная деталь: PE в этом окне иногда врёт. Причём, как я предполагаю, не из-за багов, а по маркетинговым причинам (а уж это вообще никуда не годится). Детально этот вопрос я разбирал вот в этом топике, кому интересно — можете ознакомиться.
Окно информации о DLL
Обе программы позволяют просмотреть список DLL в адресном пространстве процесса. PE показывает их в нижней части главного окна (при включении соответствующей панели), PH показывает их во вкладке в окне информации о процессе. При двойном клике на библиотеке и там и там отображается информация о ней.
И вот здесь мы снова видим почему PE является просто прикладной утилитой для продвинутого юзера, а PH — инструментом программиста. Если PE показывает только общую информацию о библиотеке и список строк в ней, то PH показывает полный список импортируемых и экспортируемых функций. Для этого больше не нужны отдельные дизассемблеры!
Минутка здоровой критики
Не будем впадать в идолопоклонничество и посмотрим что в PE лучше:
- настраивается шрифт (что полезно, поскольку по-умолчанию он мельче, чем в PH)
- есть нижняя панель, где могут отображаться DLLки или хэндлы, если интересует только эта информация — в PE до неё на один клик меньше
- можно сохранять и загружать набор колонок с информацией о процессах, полезно при периодической работе над разными типами ПО. PH тоже позволяет это делать, но только через параметры командной строки, что не так удобно
- в окне информации о процессе есть вкладка Strings, позволяющая просмотреть используемые в процессе строки. PH тоже позволяет получить эту информацию, но не столь наглядно (блоки памяти на вкладке Memory)
Выводы
Как вы и сами могли заметить, PH — этот тот случай когда в общем и так неплохую программу взяли и сделали ещё лучше, ещё дружелюбнее и ещё полезнее. Направление развития PH задавалось сообществом, детские баги быстро фиксились, упор делался на полезность инструмента не только обычному пользователю, но и программисту с сисадмином.
Утилита полезная, пользуйтесь на здоровье.