26 September 2013

Process Explorer vs Process Hacker

Инфопульс Украина corporate blogSystem Programming
Многим людям рано или поздно приходит в голову мысль, что стандартный менеджер процессов Windows весьма слаб по функционалу. Начинаются поиски альтернативы, которые в основном тут же и заканчиваются при обнаружении Process Explorer от Марка Руссиновича. Вот и Хабр даже советует эту программу.

Что тут можно сказать? Конечно, 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 показывает чуть-чуть больше информации (название процессора, общий объём физической памяти и т.д.).

Главное окно


Интерфейсы программ выглядят достаточно схоже: дерево процессов и там и там.



Отметим, однако, нюансы.

Раскраска

  1. Раскраска есть в обоих программах, но если в PE она по столбикам, то в PH — по строкам. В итоге в PH удобно взглядом проследить по горизонтали все данные одного процесса, а в PE — по вертикали использование какого-нибудь ресурса разными процессами. (upd: в комментариях подсказывают, что в PE это настраивается)
  2. Настройка раскраски есть и там и там, но если 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 лучше:
  • есть нижняя панель, где могут отображаться DLLки или хэндлы, если интересует только эта информация — в PE до неё на один клик меньше
  • можно сохранять и загружать набор колонок с информацией о процессах, полезно при периодической работе над разными типами ПО. PH тоже позволяет это делать, но только через параметры командной строки, что не так удобно
  • в окне информации о процессе есть вкладка Strings, позволяющая просмотреть используемые в процессе строки. PH тоже позволяет получить эту информацию, но не столь наглядно (блоки памяти на вкладке Memory)


Выводы


Как вы и сами могли заметить, PH — этот тот случай когда в общем и так неплохую программу взяли и сделали ещё лучше, ещё дружелюбнее и ещё полезнее. Направление развития PH задавалось сообществом, детские баги быстро фиксились, упор делался на полезность инструмента не только обычному пользователю, но и программисту с сисадмином.

Утилита полезная, пользуйтесь на здоровье.
Tags:process manager
Hubs: Инфопульс Украина corporate blog System Programming
+69
84.1k 322
Comments 64
Top of the last 24 hours