Process Monitor基本操作教學
有網友在問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基本使用課程就講到這裡,下課!!