Windows analyseren met Process Monitor – deel 1

Marco den Teuling
0

Inhoudsopgave

Process MonitorBij het oplossen van Windows-problemen kan de krachtige tool Process Monitor je vaak verder helpen. Je kunt er niets mee ‘verprutsen’. Toch kunnen zelfs gevorderde gebruikers er wel wat meer uitleg bij gebruiken. We beginnen daarom bij het begin.

Het gratis programma Process Monitor houdt van Windows en alle actieve toepassingen bij welke bestanden, mappen en registersleutels ze benaderen. Verder monitort de tool al het netwerkverkeer, controleert hij welke processen starten en stoppen en houdt hij nog een aantal andere dingen bij. Je kunt er bijvoorbeeld precies mee uitzoeken waar het bij een programma misgaat vanwege ontbrekende toegangsrechten en waar in het register een bepaalde instelling wordt bewaard. Process Monitor kan zelfs het complete boot-proces controleren. Je moet wel even je weg vinden in het programma. Zo bevat de werkbalk afgezien van de bekende pictogrammen voor openen en opslaan allerlei knoppen die je niet in andere programma’s aantreft. Bovendien zijn Windows en de geopende toepassingen zo actief dat Process Monitor elke seconde honderden gebeurtenissen registreert, zelfs als jij helemaal niets doet. En als je de pc echt gebruikt, levert dat al snel honderdduizenden of zelfs miljoenen gebeurtenissen op. Zulke hoeveelheden kun je niet zomaar bekijken en analyseren.

Om greep op de gebeurtenissen te krijgen, gebruik je filters. Soms moet je online onderzoek doen om te ontdekken wat er nu eigenlijk gebeurt. Beter gezegd: de informatie is af en toe zo complex dat je je erin moet verdiepen om het te begrijpen. Het kan er op uitdraaien dat je proefondervindelijk oplossingen moet testen. Maar dat is niet erg, want met geduld en een beetje geluk kom je met Process Monitor vaak tot een goed resultaat.

Je hoeft daarbij niet bang te zijn dat je Windows-installatie in de soep loopt. Want hoewel Process Monitor erg krachtig is, kan de tool niets kapot maken. Het is een pure analysetool zonder andere functies, dus het ergste wat er kan gebeuren is dat je geen oplossing vindt. Je moet wel op zijn minst wat basale kennis hebben van de werking van het Windows-register en de indeling van bestanden en mappen op je schijf (wat vast geen probleem is als je regelmatig c’t leest), anders kom je niet ver met Process Monitor.

Process Monitor

 

Voorbereiding

Je vindt Process Monitor als zip-bestand op de website sysinternals.com of direct als uitvoerbaar bestand via live.sysinternals.com. Die laatste kun je ook direct vanuit Windows Verkenner openen door in de adresbalk \live.sysinternals.com te typen, dus met een dubbele backslash (let op: geen gewone slashes) voor het adres. Na even wachten verschijnt de verzameling tools van Sysinternals als netwerkmap. Klik door naar de submap Tools en open het bestand Procmon.exe om de tool te starten zonder hem eerst te hoeven installeren. Vanwege de bestandsnaam wordt Process Monitor ook vaak ‘Procmon’ genoemd.

Ook al kies je voor de methode zonder installatie, je hebt wel administratorrechten nodig. Bij de eerste keer openen van het programma moet je eenmalig de licentievoorwaarden accepteren. Daarna verschijnt er meteen een dialoogvenster om filters in te stellen. De belangrijkste knop hier is ‘Reset’. Klik daarop en vervolgens op ‘Apply’, dan zet Procmon de filters terug op de standaardwaarden. Dat is erg handig als je iets verkeerd hebt gedaan bij het instellen van filters of andere filters wilt toepassen.

Met de standaardinstellingen negeert Procmon alle gebeurtenissen die hij zelf veroorzaakt en die van Autoruns en Process Explorer, twee andere klassieke tools van Sysinternals. Bovendien wordt toegang tot het wisselbestand, de MFT (Master File Table) en nog enkele locaties genegeerd. Normaal gesproken is dat een goede keuze, aangezien de gegevens daardoor iets overzichtelijker worden. Als je het dialoogvenster voor de filters sluit met ‘OK’, zie je de door Procmon geregistreerde gebeurtenissen.

Aan de slag met Process Monitor

Als voorbeeld om met de tool te beginnen, gaan we uit van een scenario dat voor alle recente Windows-versies van toepassing is: iemand moet vaak nieuwe pc’s configureren en ergert zich eraan dat hij steeds de instellingen van Verkenner moet aanpassen om verborgen en systeembestanden zichtbaar te maken. Hij bedenkt dat Windows toch de meeste instellingen in het register bewaart en dat hij de betreffende registersleutel kan exporteren naar een reg-bestand. Dan hoeft hij voortaan alleen daarop te dubbelklikken. Welke sleutel hij moet hebben is natuurlijk te vinden via Google, maar kloppen de namen van de registerwaarden en de locatie wel? Procmon geeft het antwoord.

Om dit scenario zelf te testen, start je eerst de Verkenner en Procmon. Stel de filters met Reset op de beginwaarden in en sluit het dialoogvenster. In de werkbalk van Procmon (zie de vorige pagina) klik je eerst op het vergrootglas om het loggen van gebeurtenissen te stoppen. Wat we willen zien moet nog gebeuren, dus al geregistreerde gebeurtenissen vertroebelen het beeld alleen maar. Klik op het gumpictogram om ze te wissen.

Eerste filter

Process MonitorNu bepalen we de basisinstellingen voor het filter. Daarvoor gebruik je het vizierpictogram: sleep dit met ingedrukte muisknop naar het Verkenner-venster. Zodra hierin een zwart kader verschijnt (waar precies maakt niet uit) laat je de muisknop los. Het lijkt alsof er niets gebeurt, maar aan de filters is nu een nieuwe regel toegevoegd. Die zorgt ervoor dat Procmon alleen nog gebeurtenissen laat zien die betrekking hebben op het actieve proces van Windows Verkenner. Ze worden herkend op basis van de bijbehorende ID (in ons voorbeeld 8432). De eigenlijke regel luidt als volgt: als de proces-ID (‘Column’:’ PID’) gelijk is aan een specifieke (‘Relation’:’is’) waarde (‘Value’:’8432′) moet de gebeurtenis worden weergegeven (‘Action’:’ Include’).

Het gaat daarbij echt puur om het weergeven, want met de standaardinstellingen worden gebeurtenissen van alle andere processen wel gewoon gelogd. Dat is handig als je reeds vastgelegde gebeurtenissen nog een keer wilt doorzoeken met andere filterinstellingen. Onderin het venster in de statusbalk geeft Procmon aan hoeveel gebeurtenissen er te zien zijn en hoeveel er in totaal zijn geregistreerd.

Omdat we in dit voorbeeld op zoek zijn naar registersleutels, kunnen we alle andere gebeurtenistypen negeren. Dat kan via de werkbalk. Deactiveer de vijf filterknoppen helemaal rechts in de werkbalk allemaal, behalve die voor het register.

Momentopname

Nu is alles ingesteld om de gezochte gebeurtenissen te loggen, maar wacht nog even met activeren. Ga eerst in de Verkenner naar de mapopties. Die vind je in Windows 7 in de menubalk onder ‘Extra’. Bij Windows 10 ga je in het lint naar het tabblad ‘Beeld’ en klik je naast het groepsvak ‘Weergeven / verbergen’ op ‘Opties’. Ga in het bijbehorende dialoogvenster naar het tabblad ‘Weergave’. Blader naar beneden en pas de vinkjes aan die betrekking hebben op verborgen bestanden en mappen, verborgen besturingssysteembestanden en extensies verbergen.

Hierna moet je drie keer klikken, maar lees eerst deze hele paragraaf door. Zodra je namelijk op ‘OK’ of ‘Toepassen’ klikt, schrijft Windows de aangepaste instellingen naar het register en dat zijn precies de gebeurtenissen die je wilt zien. Om zo min mogelijk irrelevante gebeurtenissen vast te leggen, moeten de volgende drie handelingen zo kort mogelijk na elkaar gebeuren: klik in Procmon op het vergrootglas om de registratie te starten, klik vervolgens in het dialoogvenster op ‘OK’ en stop daarna in Procmon de registratie weer.

Process Monitor

Overvloed!

Zelfs als je erg rap klikt, kan Procmon vele tienduizenden gebeurtenissen vastgelegd hebben. Je hebt dus extra filters nodig. Omdat je weet dat het om nieuw gemaakte of overschreven registeritems gaat, kun je alle gebeurtenissen uitsluiten waarbij alleen sleutels of waarden worden geopend of gelezen (‘RegOpenKey’, ‘RegQueryValue’), gesloten (‘RegClose- Key’) enzovoort. Zoek in plaats daarvan met ‘RegSetValue’ naar het schrijven van inhoud naar een registerwaarde.

Dat kan makkelijk door in de kolom ‘Operation’ met de rechtermuisknop op een oninteressante gebeurtenis te klikken. In het snelmenu vind je kant-en-klare filterregels, bijvoorbeeld ‘Exclude ‘RegQueryKey”. Klik wel in de juiste kolom, want de inhoud van het snelmenu verschilt per kolom. Vind je een gebeurtenis met ‘Reg- SetValue’ als Operation dan kies je juist in het snelmenu ‘Include ‘RegSetValue”. Je kunt doorgaan met uitsluiten van gebeurtenissen tot je een gebeurtenis vindt voor de Include-regel. Dat lijkt omslachtig, maar het gaat sneller dan handmatig de juiste regel(s) opstellen, door de ellenlange lijst scrollen of met de zoekfunctie in de weer gaan.

Nu blijven er nog enkele tientallen gebeurtenissen over. Bij opvallend veel daarvan bevat de padvermelding in de kolom ‘Path’ de tekenreeks ‘ShellBags’. Wat is dat toch? Wat online speurwerk biedt uitkomst. Google op “ShellBags” (inclusief de dubbele aanhalingstekens) en typ erachter als extra zoekoptie ‘site:microsoft. com’ (zonder aanhalingstekens). Het eerste zoekresultaat is een Knowledge Base-artikel over problemen met map- en miniatuurweergaven. De mapweergave heeft betrekking op verschillende weergaven voor verschillende mappen. Je ziet snel genoeg dat dit niet is waar je naar op zoek bent. Verberg ook deze gebeurtenissen via het snelmenu, maar niet met de kant-en-klare Exclude-regel. Daarmee moet je ze namelijk nog bijna allemaal afzonderlijk verbergen.

Process Monitor

In plaats daarvan kies je in het snelmenu van zo’n gebeurtenis de optie ‘Edit Filter ‘HKCUSoftware…”. Het dialoogvenster voor de filters opent dan met een ingevoerde regel die je kunt aanpassen. Klik in het invoervak en kort het lange pad in tot ShellBags. Met de drie keuzelijsten naast het invoervak pas je de filterregel verder aan. De eerste keuzelijst staat op ‘Path’. Dat klopt in dit geval, aangezien het om het gebeurtenispad gaat. Maar de tweede keuzelijst moet niet op ‘is’ blijven staan want het gaat niet om exacte overeenkomsten. We willen alle gebeurtenissen die de ingevoerde inhoud bevatten. Verander ‘is’ dus in ‘contains’. Verander tot slot nog ‘include’ in ‘exclude’ om deze gebeurtenissen uit te sluiten. Als alles goed is ingesteld, voeg je de nieuwe filterregel toe met de knop ‘Add’.

Mogelijk zie je nog steeds ‘ShellBag’- gebeurtenissen, namelijk ‘ShellBagMRU’. MRU staat voor Most Recently Used, oftewel de lijst van recent gebruikte items. Die is voor ons probleem niet zo relevant, dus kun je er een extra regel voor toevoegen. Maar het is sneller (en vooral efficiënter) om de voorgaande regel aan te passen en de ‘s’ aan het einde van ‘ShellBags’ weg te halen. Open het filtervenster weer via het vergrootglas en zoek naar de regel waarbij in de kolom ‘Value’ het pad staat. Dubbelklik op de regel om die te verwijderen uit de lijst en bovenin het venster weer te geven. Verwijder in het invoervak de laatste ‘s’ en klik weer op ‘Add’ en ‘Apply’.

Process Monitor

De winnaars zijn …

De overblijvende circa 20 gebeurtenissen zijn eindelijk geschikt om door te spitten. Daarbij vallen de gebeurtenissen op waarvan het pad eindigt met ‘MuiCache518012CD5LanguageList’. Dat klinkt als iets wat te maken heeft met het tijdelijk bewaren van taalinstellingen en kan dus ook weg via – je raadt het al – rechtsklik, Exclude …

Nogmaals: het kan geen kwaad bij het toevoegen van regels voortvarend te werk te gaan, want je kunt ze altijd achteraf weer verwijderen. Daarvoor selecteer je de regel simpelweg in het filter-venster en klik je op ‘Remove’.

Wat er nu nog overblijft, is overzichtelijk en met wat googelen snel duidelijk. Zo blijken HideFileExt, ShowSuperHidden en Hidden in HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced de gezochte registerwaarden. Om dat te controleren, kun je nogmaals de instellingen wijzigen en de registerwaarden bekijken in Regedit. Procmon helpt daarbij een handje: rechtsklik op een gebeurtenis en kies ‘Jump To…’ in het snelmenu om de bijbehorende sleutel in de Register-editor te openen. Wijzig de instelling en kijk of de betreffende registerwaarde verandert. Als dat zo is (gebruik F5 voor verversen van het scherm), heb je de gezochte registerwaarde met succes uit honderdduizenden gebeurtenissen gefilterd.

Als je wilt, kun je nu het aan het begin genoemde reg-bestand maken. Ga met ‘Jump To…’ naar de betreffende sleutel in Regedit en rechtsklik erop voor het snelmenu. Kies ‘Exporteren’ en bewaar het bestand met een zelf gekozen naam. Open dit bestand in Notepad.exe. Vanaf regel vier staan alle registerwaarden, laat alleen de drie met Procmon gevonden waarden staan. Helemaal onderaan wordt tussen blokhaken een tweede registersleutel vermeld. Die kan ook weg. Sla het bestand op en je bent klaar.

De functie ‘Jump To…’ werkt trouwens ook voor bestandstoegang. In dat geval wordt de betreffende map geopend in Windows Verkenner.

En nu verder

Process MonitorJe weet nu genoeg om verder aan de slag te gaan met Process Monitor. Bekijk nog even op je gemak wat je al weet. In het filtervenster is het de moeite waard om eens te kijken welke opties de keuzelijsten te bieden hebben. Als iets niet duidelijk is, probeer je het door experimenteren te ontdekken.

Om te oefenen kun je dit vraagstuk oplossen (voor jouw Windows-versie): probeer uit te zoeken hoe Windows weet of ‘hulp op afstand’ is toegestaan of niet. De bijbehorende instelling vind je in het Configuratiescherm onder ‘Systeem’ via ‘Instellingen voor externe verbindingen’ op het tabblad ‘Externe verbindingen’. Zoek je meer uitdaging? Probeer dan maar eens met Procmon uit te zoeken hoe Windows onthoudt welke bureaubladachtergrond er getoond moet worden. De oplossingen en meer tips en trucs voor Procmon vind je in c’t magazine, uitgave 12.

Tot slot nog een opmerking: veel van de gevonden informatie kan nogal verwarrend zijn. Dat geldt niet alleen als je te weinig (vak)kennis hebt van het betreffende onderwerp. Een voorbeeld: misschien denk je dat de melding ‘Buffer overflow’ in Procmon wijst op een beveiligingsprobleem. Het betekent echter alleen dat Windows heeft vastgesteld dat de buffer voor een functie te klein wordt gekozen. Voluit geschreven betekent het niet ‘Er is een buffer overflow opgetreden’ maar ‘Er is een buffer overflow verhinderd’. Vaak stellen ontwikkelaars een buffer eerst op 0 in bij het initialiseren van een functie, om te ontdekken hoeveel ruimte er nodig is voor de door Windows geleverde data. Even later zie je in Process Monitor vaak dezelfde gebeurtenis, maar dan met het resultaat ‘success’. In geval van twijfel kun je dus het best kalm blijven en een zoekmachine raadplegen.

(Axel Vahldiek / Marco den Teuling, c’t magazine 11/2017)

Hier vind je nog enkele YouTube-video’s waarin de ontwikkelaar van de tool (Microsofts Mark Russinovic) probleemoplossing met Process Monitor demonstreert: www.ct.nl/softlink/1711128

Meer achtergronden en workshops lees je in c't magazine. Nieuwste uitgave: c't 05/2024

Deel dit artikel

Marco den Teuling
Marco den TeulingHad als eerste eigen computer ooit een 16-bit systeem, waar van de 48 kilobyte toch echt niet ‘genoeg voor iedereen’ was. Sleutelt graag aan pc’s, van de hardware tot het uitpluizen van de BIOS-instellingen. Vindt ‘Software as a Service’ een onbedoeld ironische naamgeving.

Lees ook

Raspberry Pi als NAS-systeem gebruiken? Dit moet je weten!

Wist je dat je een Raspberry Pi als Network Attached Storage (NAS) kunt gebruiken? Zo voldoet de Raspberry Pi 4 aan de belangrijkste eisen om dit te k...

Je Raspberry Pi op afstand bedienen? Zo krijg je het voor elkaar met SSH!

De Raspberry Pi op afstand bedienen is handig en kan op verschillende manieren. Via SSH is het makkelijkste op te zetten, we laten zien hoe.

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er