Process Monitor
Pakiet Microsoft Sysinternals dostarcza wiele znakomitych narzędzi, pomocnych ciut bardziej doświadczonym
użytkownikom systemów Windows, w zgłębieniu wiedzy o zachodzących procesach w użytkowanym systemie.
Oprócz walorów czysto edukacyjnych, umieszczone w pakiecie programy pozwalają również, we współpracy z
użytkownikiem, rozwiązać wiele problemów, na które napotykamy się w codziennej pracy. Po Process
Explorer, którego test przeprowadziliśmy dla Państwa jakiś czas temu, przyszedł czas na omówienie kolejnego
z gamy znakomitych programów diagnostycznych z tej rodziny. Bohaterem tego artykułu będzie tym razem
Process Monitor. Oprócz szczegółowego opisania jego możliwości, przedstawimy również jeden z możliwych
scenariuszy, w którym program okazać się może pożyteczny.
Wprowadzenie
Process Monitor, chociaż napisany został na nowo, od podstaw, jest połączeniem, swoistą hybrydą funkcji
dostępnych przedtem w dwóch narzędziach skonstruowanych przez ojców Sysinternals, Panów Marka
Russinovicha oraz Bryce’a Cogswella, mianowicie Filemon i Regmon. Oprócz funkcji, które oferują
wspomniane aplikacje dodano również szereg innych, nowych usprawnień. Program jest zaawansowanym
narzędziem monitorującym w czasie rzeczywistym aktywność powiązań składników systemowego rejestru,
uruchomionych procesów i otwartych przestrzeni systemu plików. Może być używany przez administratorów w
celu dostarczania szczegółowych informacji na temat obserwowanego procesu, jak i całego systemu.
Użytkownicy, którzy mieli okazję korzystać ze starszych wersji, zauważą wiele zaimplementowanych ulepszeń.
Nowościami jakie wdrożono w stosunku do pierwowzorów są:
Monitorowanie statusów wejścia i wyjścia procesów i wątków, wliczając kod statusu wyjściowego
Monitorowanie ładowanych obrazów bibliotek DLL i sterowników urządzeń jądra systemu
Większa ilość porównywanych parametrów wejścia/wyjścia
Bezpieczne stosowanie filtrów zapewnia ochronę zebranych danych
Konfigurowalne i ruchome kolumny dla każdego ze zdarzeń
Filtry mogą być stosowane dla każdego pola, wliczając w to pozycje nie skonfigurowane jako kolumny
Zaawansowana architektura monitoringu pozwala na tworzenie dużych logów, zawierających nawet
dziesiątki milionów zdarzeń
Drzewo procesów pokazuje powiązania występujące między procesami w trakcie analizy
Kompatybilność z plikami logów tworzonymi przy pomocy starszych wersji programu
Dymek ze szczegółowymi informacjami o procesie
Okienko podpowiedzi pozwalające na łatwy dostęp do sformatowanych danych , które nie uwzględniono w
kolumnach
Monitorowanie w czasie uruchamiania
Oręż w dłoń... do dzieła!
Najnowszą wersję programu pobrać możemy z
Działu pobierania
. Aplikacja nie posiada instalatora, jedynym
krokiem jaki musimy wykonać, aby ją uruchomić jest wypakowanie plików ze ściągniętego archiwum i
uruchomienie pliku Procmon.exe. Niestety menu nie zostało spolonizowane, ale nie powinno to w znaczący
sposób wpłynąć na prostotę użytkowania.
Interfejs programu zawiera belkę z najpotrzebniejszymi i zarazem najczęściej używanymi opcjami, pod którą
zlokalizowano główne okno aplikacji, gdzie znalazło się miejsce dla wychwyconych w trakcie monitorowania
zdarzeń. Każdemu wejściu przyporządkowano szereg szczegółów, które wyświetlane są w kolumnach obok.
Informacje zawierają po kolei numer sekwencji, czas zdarzenia, nazwę procesu i jego PID, rodzaj operacji
CentrumXP.pl
http://www.centrumxp.pl/Druk/1742.aspx
1 z 5
2008-09-15 16:16
(otwieranie, tworzenie, nadawanie wartości, zamykanie klucza/lokalizacji), ścieżkę (w rejestrze lub na dysku
lokalnym), rezultat, oraz szczegółowy opis.
Przywołany pasek z przyciskami zawiera następujące opcje:
Open – otwiera logi programu zapisane w plikach .PML i .PMB
1.
Save – zapisuje log programu
2.
Capture (Ctrl + E) – uruchamia oraz wyłącza proces zapisywania zdarzeń
3.
Autoscroll (Ctrl + A) – automatyczne przesuwanie
4.
Clear (Ctrl + X) – czyszczenie okna
5.
Filter (Ctrl + L) – uruchamia okno stosowania filtrów ograniczających wyniki
6.
Highlight (Ctrl + H) – zaznaczanie kolorem wyników spełniających założone kryteria
7.
Include Process From Window – pozwala wybierać pośród otwartych okien aplikacji proces, który
życzymy sobie uwzględnić w porównaniu
8.
Find (Ctrl + F) – przeszukiwanie
9.
Jump To Object (Ctrl + J) – przechodzi do ścieżki w rejestrze lub na dysku
10.
Show Registry Activity – pokazuje wejścia dotyczące rejestru
11.
Show File System Activity – wyświetla zdarzenia z udziałem lokalizacji
12.
Show Process and Thread Activity – uwzględnia procesy i wątki
13.
Show Profiling Events – pokazuje zmiany w sferze profili użytkownika
14.
Mechanizm filtrowania i podświetlania
Funkcjonalnością, bez której ProcMon byłbym praktycznie bezużyteczny, lub w znacznym stopniu upośledzony,
jest wbudowana funkcja tworzenia kwerend, za pomocą których możemy w znaczący sposób ułatwić sobie
analizę zebranych informacji. W toku tworzenia logu programu (Capture) wyświetlane zostają wszystkie
wykonane akcje. Jest ich zazwyczaj bardzo wiele, w takiej ilości wyników bardzo trudno odnaleźć dane, które
będą istotne. Pomocna w takim wypadku będzie wspomniana funkcja filtrowania. Wybierając przycisk Filter
ujrzymy okno, którego poprawne wypełnienie sprawi, że zawężone zostaną wyniki monitorowania.
Pierwsza lista rozwijana zdefiniować pozwala charakter poszukiwań, to znaczy, czy mechanizm ma przetworzyć
dane na podstawie np. nazwy pliku, numeru PID, unikalnego ID, ścieżki, wersji, czy nazwy firmy. Lista jest dość
długa i zawiera szereg możliwych do wyboru kryteriów. Pole wyboru obok służy do określenia czy wpisana do
wyszukania fraza zawierać winna dokładnie taki ciąg znaków (is) i odwrotnie, wskazane jest, aby nie
występował (is not), poniżej oraz powyżej określonej wartości (less than oraz more than), rozpoczyna się
(begins with) oraz kończy (ends with) określonymi znakami jak również zawiera (contains) oraz nie zawiera
(exclude) wskazanego ciągu. Lista najbardziej po prawej mieści tylko dwie opcje. Wybranie Include
powoduje, że skonfigurowany filtr będzie wyświetlał wyłapany wątek na liście po przetworzeniu, natomiast
Exclude przyniesie odwrotny skutek, pośród wyników, element spełniający podane kryteria zostanie ukryty.
Skonfigurowany element dodajemy do listy przyciskiem Add. Możliwe jest tworzenie sekwencji kwerend, co
może maksymalnie zawęzić grono potencjalnie poszukiwanych zdarzeń. Po naciśnięciu przycisku OK aplikacja
rozpocznie przeszukiwanie tworzonego non stop dziennika i wyświetli dane spełniające założone przez
użytkownika kryteria. Skonfigurowane dane można zapisywać, służy ku temu opcja Save filter w menu Filter.
Gdy zaistnieje przymus przeinstalowania systemu, możemy również utworzone filtry wyeksportować do pliku, a
następnie ponownie je wgrać. Potrzebne opcje znajdziemy w Filter, Organize filters.
Opcja podświetlania w menu Filter, Highlight działa bardzo podobnie do opisanego wyżej filtrowania, z tą
jednak różnicą, że wydarzenia spełniające założenia zostają wyróżnione na tle wszystkich innych określonym
kolorem, który zdefiniować można w menu Options, Highlight colors.
CentrumXP.pl
http://www.centrumxp.pl/Druk/1742.aspx
2 z 5
2008-09-15 16:16
Inne opcje
Miejsce przechowywanej bazy danych oraz dane jej dotyczące
Wybierając File, Backing Files wywołamy okienko konfiguracji logu programu. Domyślnie jest on tworzony z
udziałem pliku stronicowania (pagefile), ale program może zapisywać go również w zdefiniowanym przez
użytkownika miejscu. Dodatkowo w miejscu tym wyświetlane zostają dane dotyczące aktywnego pliku logu, to
jest np. ilość rekordów lub wielkość bazy w bajtach.
Unikalne rekordy
Opcja Tools, Unique values pozwala na wyświetlenie poszczególnych rekordów z podziałem na kryteria, bez
powtórek.
Dodatkowe kolumny
W menu Options, Select columns będziemy mogli wybrać typy danych, jakie wyświetlać się będą w
kolumnach w głównym oknie programu.
Analiza podczas uruchamiania
Opcja Enable Boot Logging w podmenu Options pozwoli aktywować opcję śledzenia zdarzeń, począwszy od
momentu ładowania się systemu operacyjnego.
Po teorii odrobina praktyki
Program wykorzystać możemy np. w celu dowiedzenia się, w jakim kluczu rejestru zapisywane zostają zmiany
poczynione w jednym z apletów systemu Windows, lub z aplikacji wchodzącej w jego skład, ale nie tylko. Po
krótkim wprowadzeniu spróbujmy zastosować omówioną funkcjonalność w prostym scenariuszu. Wykorzystamy
tutaj popularny Notatnik i opcję zmiany domyślnej czcionki oraz jej wielkości. Zanim go jednak uruchomimy
powinniśmy upewnić się, że Process Monitor, jest aktywny i monitoruje system. Będzie to sygnalizował brak X
na ikonie Capture na belce zawierającej główne przyciski. Wykonajmy kolejno następujące kroki:
Otwórzmy notepad
1.
Napiszmy kilka dowolnych znaków
2.
Wybierzmy menu Format, Czcionka, a następnie:
3.
CentrumXP.pl
http://www.centrumxp.pl/Druk/1742.aspx
3 z 5
2008-09-15 16:16
a. Z listy dostępnych krojów zaznaczmy np. Calibri
b. Zmieńmy wielkość czcionki na powiedzmy 20
c. Wciśnijmy OK
Po wprowadzeniu zmian możemy zapisać plik i zamknąć edytor, nie będzie już w kolejnych krokach
potrzebny
4.
Przejdźmy do Process Monitor
5.
Zatrzymajmy proces tworzenia listy przeprowadzanych operacji naciskając przycisk Capture w taki
sposób, aby na ikonie pojawił się znak X
6.
W tym momencie zaprzestaliśmy dalszego rozrostu logu programu, aby ograniczyć do absolutnego
wymaganego minimum ilość różnorakich akcji, jakie zostały wykonane w procesie zmiany domyślnej czcionki i
jej wielkości w systemowym Notatniku. Teraz pozostało jedynie w odpowiedni sposób przetworzyć zebrane
informacje, aby rozwikłać zagadkę, jaką sobie postawiliśmy na początku tego akapitu. Mianowicie w jakim
zakamarku rejestru program składuje dane, które w poprzednim kroku konfigurowaliśmy poprzez menu w
graficznym interfejsie.
Jeżeli przypadkowo zamknęliśmy procmon, musimy ponowić wcześniejszy proces, jeżeli jednak pozostawiliśmy
go uruchomionego, możemy teraz przejść do filtrowania zebranych informacji.
Ustaliliśmy, że wprowadzone zmiany zapisują się w dwóch z wartości rejestru, wyłączmy więc pokazywanie w
głównym oknie programu pozostałego rodzaju zdarzeń z udziałem systemu plików (Show File System
Activity), procesów i wątków (Show Process and Thread Activity), oraz profilów (Show Profiling Events).
Zauważmy, że w tym momencie wszystkie dostępne typy operacji rozpoczynają się od Reg. Dane możemy
przetworzyć na dwa sposoby. Wprost z głównego okna używając menu kontekstowego prawego przycisku dla
jednej z akcji i wybraniu Include/Exclude. Spowoduje to otwarcie okna Filter z już wstępnie uzupełnionymi
polami, w zależności od zdarzenia jakie wybierzemy z głównego okna. Możemy również samodzielnie uzupełnić
wszystkie dane i z tego sposobu skorzystamy w tym przykładzie.
Wciśnijmy w tym celu przycisk Filter
Dla pewności zresetujmy wszystkie poprzednio używane filtry przyciskiem Reset
Wybierzmy opcję Process Name w kolumnie typu danych
Zaznaczmy is w polu relacji
Wpiszmy Notepad.exe w tekstowym polu wartości
Z listy akcji wybierzmy Include
Naciśnijmy Add
Potwierdźmy przyciskiem Apply
Zastosowanie filtra spowodowało, że lista została znacznie uszczuplona, pozostały na niej jedynie zdarzenia, w
których jako nazwa procesu wyszczególniony został notepad. Możliwości znacznie mniej, ale nadal nic
pewnego. Dodajmy więc dodatkowe zastrzeżenia. Jak pamiętamy w kolumnie akcji widzieliśmy szereg nazw
typu RegQueryValue, RegCloseKey, RegEnumValue, RegSetValue. Jak sama nazwa wskazuje, dotyczą
one takich operacji na rejestrze, jak otwieranie, zamykanie itp. Szczególnie powinna zainteresować nas opcja
RegSetValue - nadawanie wartości, bo właśnie tym trybem następuje zmiana konfiguracji, które
przeprowadzaliśmy. Spróbujmy to wykorzystać dodając w analogiczny do poprzedniego sposób kolejną
kwerendę.
Ponownie wywołajmy aplet filtrów
Wybierzmy opcję Operation w kolumnie typu danych
Zaznaczmy is w polu relacji
Wpiszmy RegSetValue w tekstowym polu wartości
Z listy akcji wybierzmy Include
Naciśnijmy Add
Potwierdźmy przyciskiem Apply
CentrumXP.pl
http://www.centrumxp.pl/Druk/1742.aspx
4 z 5
2008-09-15 16:16
W ten oto sposób pozostało niewiele możliwości do wyboru. Przyjrzyjmy się więc kolumnie szczegółów (z ang.
Detail) oraz ścieżce (z ang. Patch), ponieważ zawierają one znajome dane. Ścieżka odwołuje się do lokalizacji
HKCU\Software\Microsoft\Notepad, która już powinna dać wiele do myślenia, a jeżeli spojrzymy na
szczegóły, odnajdziemy napis Calibri i wartość IfFaceName oraz iPointSize, w której to wartości zapisana
została wielkość czcionki. Tym sposobem odnaleźliśmy informacje, których poszukiwaliśmy. W podobny sposób
możemy również rozwikłać zagadkę nadawania uprawnień w rejestrze oraz dla plików na dyskach NTFS.
Pamiętajmy, że wciskanie przycisków zmiany rodzaju wyświetlanych typów operacji jest bezinwazyjne. Znaczy
to, że akcje, których w tym momencie sobie nie życzymy, nie zostają bezpowrotnie wykasowane z logu
programu, a jedynie ukryte. Ponadto wychodząc z programu warto zapisać skonfigurowane kryteria, a
następnie zresetować filtry, tak aby po ponownym uruchomieniu nie zakłócały one pracy programu ukrywając
informacje, które akurat w innym przypadku będą ważne.
Podsumowanie
Prosty przykład jaki zaprezentowaliśmy to jedynie namiastka prawdziwych możliwości programu. Z pomocą
opcji wbudowanych w Process Monitor możemy praktycznie od środka zaobserwować szereg procedur, jakimi
rządzą się operacje , które na co dzień wykonujemy korzystając z systemu operacyjnego. Wobec tych faktów
niczym specjalnie niezwykłym wydaje się być fakt, że ProcMon jest jednym z najchętniej wybieranych aplikacji
pakietu Microsoft Sysinternals Suite.
CentrumXP.pl
http://www.centrumxp.pl/Druk/1742.aspx
5 z 5
2008-09-15 16:16