有網友在問Process Monitor如何使用,我想了想,這位茶包一哥在本Blog出生入死破案無數,卻還真的沒正式介紹過它的操作使用方式。所以,Process Monitor的初級使用教學來了!

SysInternals的兩位天才被挖去微軟後的第一個代表作,就是將原本的File Monitor(FileMon)與Registry Monitor(RegMon)兩套工具,金剛合體成Process Monitor,這真是個叫人感動落淚的舉動呀~~~

以往在排除問題時,常常要同時留意File及Registry存取狀況,所以就要同時開FileMon跟RegMon,故意讓問題再發生,然後同時關閉FileMon及RegMon,開始比對二者的記錄: 找出FileMon讀取A檔的時點,對照到RegMon看當時讀了哪個Registry,在還沒有搞出雙螢幕之前,我還常得把RegMon的記錄檔Copy到Notebook上,一眼看PC,一眼看Notebook方便比對。對不起,我又開始碎碎唸了,這些吃蕃薯籤的回憶,還是留給中年人獨自品嚐好了。XD

總之,ProcMon把RegMon與FileMon的監控放在一起,實在是佛心來著!

要用ProcMon的第一步當然要先去下載,網址在這裡,免安裝,我都只解EXE檔出來放在桌面就開始幹活。

開啟後,你會看到如上圖的畫面,通常我都只用到Toolbar的那一排按鈕就玩得不亦樂乎。我用顏色標出來幾個重要功能,說明如下:

1 開啟/停止記錄事件: 打X時表示現在停止捕捉事件

2.自動下捲: 由於監聽過程中,清單會不斷增長,你可以選擇ProcMon永遠顯示清單最下方的最新記錄。不過清單通常長得很快,會捲到你眼花。

3.清除目前清單中的記錄

4.設定Filter: 超重要! ProcMon是廢鐵或是寶劍全看你會不會設Filter,後面再做詳細介紹

5.指定桌面程式: 這個小瞄準器在SPY++裡很有名。如果你今天想要觀察某個桌面程式讀了哪些Registry、寫了哪幾個File,將小瞄準器拖拉到那個程式的UI上,ProcMon就會在Filter中加入限定該程式的條件(指定Process ID)

6.搜尋: 在現有的記錄中找尋特定文字

7.跳至Registry/File: 粉方便的功能! 在記錄中會看到某些Registry或File的名稱,點選那一列記錄後按下去,若是Registry記錄就會開Registry Editor停在該Registry Key上,若是File就會開啟FileMonitor停在該檔案的所在目錄上。在記錄上按右鍵也有個Jump To,效果相同。

8, 9, 10: 用來指定你要監聽的範圍,分別是Registry、File及Process活動,如果你只關心File存取,就只開啟File,真正的線索才不會被埋藏在一大堆沒用的Registry記錄中。

好了,接著來看ProcMon操作的精華所在,設定Filter!!

每一則Filter條件分為三個部分,第一部分是欄位,每一筆記錄有很多欄位,你可以限定某個欄位必須符合某個條件的事件才要"顯示",第二部分可指定要等於、包含等運算子,第三部分則是特定的字串值,最後要指定這個條件要包含進來還是排除掉。

注意到沒有,我剛才說Filter指的是"顯示"條件,而不是"捕捉"條件哦! 第一張圖的Status Bar中有個Showing 11,894 of 39,380,意思是ProcMon保留了四萬筆記錄,依現在的Filter條件只Show其中的30%,可以事後再修改條件,篩選不同的記錄來看。這又是一個本著佛心的新設計,過去使用FileMon/RegMon時常發生因條件太嚴沒抓到關鍵事件,只好改條件再來一次的狀況,現在Filter可以事後再Tune,節省了很多重頭來過的時間。

不過修改Filter的操作有點奇特,在下方清單點兩下,該條件會從清單中移除,移到上方,修改後要按Add把它加回清單,如果你改完直接按OK,條件就消失了,剛開始用要花點時間習慣。

用個實例來說,如果我想在XP/2003/Vista下觀察IIS的活動,可以設定以下的Filter:

Process Name is 'w3wp.exe'  這樣子ProcMon會抓到所有w3wp.exe對File及Registry的存取,若你的IIS有多個Application Pool,則會有多個PID不同的w3wp.exe,你可以試著再找到關注對象的Process ID,進一步縮小範圍。

 

按下閞始捕捉後,會得到如上圖的一大串記錄,清單中Operation是RegOpenKey、RegCloseKey、RegQueryValue的是Registry記錄,CreateFile、CloseFile、ReadFile等則是File存取記錄。在每則記錄上按右鍵還有好幾個貼心的功能,你可以用Exclude/Include加入與這筆記錄相關的Filter條件後立即生效。這樣我們可以先設較寬的Filter組合,在檢視結果的同時再一一排除無關者,迅速縮小範圍。Property則可看到該筆記錄的全部細節,例如: 發生Access Denied時,甚至還可以看到Impersonate的情形。

上圖中沒顯示出來,但Path後方還有個重要欄位叫Result,就是這個動作的執行結果,NOT FOUND/ACCESS DENIED之類的,通常是值得我們關注的焦點。

今天的Process Monitor基本使用課程就講到這裡,下課!!


Comments

# by

感謝您無私貢獻,每日必看

# by NY

Hi 您好: 今天看到這個程式的教學,我有下載下來用哦~ 可是我用會當機… 我試用幾次 第一次都沒設定filter,直接run,沒問題… 第二次用「瞄準器」瞄準「記事本」(真的只有開記事本)…執行五秒鐘後電腦速度變超慢…十秒後電腦死當…,試幾次都一樣… 最後一次在filter設定程式PID,情況和記事本一樣…強制關機後電腦c槽掛點重灌… 當時我的ProcessMonitor放桌面,重灌時我用dos看…變成無窮迴圈,應該是我強制關機的關系吧… 為什麼會這樣呢?你在用的時候會這樣嗎? 我的電腦效能還可以說…這一定要用超強電腦才能跑嗎? 麻煩你了… 如果可以,是否回信教我呢? optimal_uu@hotmail.com 感謝您~謝謝… ^^

# by NY

我的電腦是XP sp2 + KIS6.0,版本是否有關呢?

# by DC

Below is a link with some Process Monitor hands-on examples: http://blogs.technet.com/softgrid/archive/2008/01/24/process-monitor-hands-on-labs-and-examples.aspx

# by shyhshinlee

ProcMon 與 ProcExplore 是不同的兩個東西.

# by 路人

路過推!!

# by 路人甲

好文

# by shaw

你好,你的博文不错。 我想请问为啥我用PM监视某个进程时,结果显示两个操作的时间持续时间都是毫秒,但间隔时间却相差20秒之多呢?这中间到底还发生什么事件了?因为我的某个程序现在在进行某个创建窗口的过程中很慢(以前没问题的,我重装程序也没用),我想找出为什么。谢谢你。如果你有空能回答我的问题的话,请给我发邮件xunbao15 AT 163 DOT com, 然后我再来访问你的博客。谢谢

# by Jeffrey

to shaw, PM主要是要抓Registry, File的存取,依您的案例,既然沒有Reg/File動作,PM恐怕沒法針對這20秒的空白再提供更多資訊。若要問我的建議,我想只能推測了一下這段時間Process可能在忙什麼? (CPU有上升的話) 或在等待什麼? (如果CPU很底的話) 20秒的時間不算短,說不定用Process Explorer或監控網路活動的工具可以找出什麼端倪來。祝好運~~~

# by wajika

写的不错,收藏了,不过还有其他很多工具,是否有相应文章?

# by Thragna

不錯,12年前的文章到現在還很有用。 剛剛嘗試抓程式的登錄檔,一下就抓到。爽 感謝教學。

Post a comment