下文摘選「Windows Sysinternals實戰經驗大募集」實戰專家與獲獎邦友分享的技巧與經驗。

診斷疑難雜症的Process Monitor與Process Explorer
早期有File Monitor及Registry Monitor兩項工具,而Process Monitor整合了全部功能,省去以前用肉眼比對參照File與Registry記錄的困擾。

應用Process Explorer的實用技巧
Process Explorer是Sysinternals中相當好用的工具,可以用來查詢程序之間的階層關係、了解程序開啟哪些檔案,或使用到哪些DLL,或是查看完整的系統資訊等。

Filemon揪出木馬程式藏身的所在
大約3、4年前,有一臺電腦定時產生一個木馬檔案,雖然防毒軟體可以偵測並掃除,但是防毒軟體卻無法追查到究竟木馬程式藏身在哪裡,這時候Filemon就可以派上用場了。

能直接找出系統滿載的真正原因
Process Explorer可以從「description」和「Company」中,找出可疑程式的基本資料,也可清楚知道現在系統中所有程序運作情形與占用資源狀況。

加快建立虛擬作業系統
用NewSID,可以重新建立電腦的SID,避免重複在網域上登錄,造成衝突。而且比使用sysprep快多了!診斷疑難雜症的Process Monitor與Process Explorer

實戰專家 李明儒:
2001年我透過搜尋引擎逛到www.sysinternals.com這個網站,看到一大票輕薄短小卻功能強悍的免費工具,猶如發現桃花源,Mark Russinovich跟Bryce Cogswell兩個人幾乎比微軟還懂Windows,才寫得出這麼鞭辟入裡的系統工具。到2006年中,Microsoft併購了Winternals公司,把這兩位天才延攬成微軟的人馬,Sysinternals同時改名為Windows Sysinternals,漸漸變成Windows SDK的一部分。

診斷疑難雜症的Process Monitor與Process Explorer
在朋友同事眼中,我是個專治電腦疑難雜症的高手,別人處理五、六天還搞不定的問題,交到我手上,不到半小時就搞定,引來眾人驚嘆的眼光。其實,我只不過比一般人更懂得善用工具,而最常用的工具,便是Sysinternals。

在Sysinternals眾多工具中,我最常用的是Process Monitor與Process Explorer,其餘如NewSID、AutoRuns也很強悍,但我使用的頻率就不若前二者來得高。

早期有File Monitor及Registry Monitor兩項工具,而Process Monitor整合了全部功能,省去以前用肉眼比對參照File與Registry記錄的困擾。File Monitor的特色是用來查檔案不存在或權限不足問題很管用;而Registry Monitor則可用來觀察應用程式存取Registry的情況。


Process Monitor整合File Monitor及Registry Monitor兩項工具,方便查尋檔案存在或權限問題,以及觀察應用程式存取Registry的情況。



Process Explorer類似Windows的工作管理員(Task Manager),但提供更詳細的情報,包含用到的DLL檔、開啟的檔案、網路使用狀況等,調查可疑程式時,它格外好用。Process Explorer還可拿來砍掉一些Task Manager也無法停止的處理程序。以前遇到檔案被其他程式鎖定無法刪除時,我也常用Process Explorer找出苦主(現已有更方便的Unlocker工具)。

排解疑難(Trouble-Shooting)跟看病的過程很像,有經驗的老醫師,可以一眼就知道是什麼病、要怎麼醫,但遇到非典型的疑難雜症,無相關案例可循,加上可能成因頗多,自然得靠進一步照X光、內視鏡,或做電腦斷層掃描才能確認病灶。Process Monitor與Process Explorer等工具,就像排解疑難的X光機與內視鏡,假如你懂得運用,分析問題的犀利程度自然更勝一籌。醫術高明的醫生,在小診所只能靠聽診器看看感冒、拉肚子,在大醫院裡有X光、電腦斷層等先進設備加持,才能診斷出刁鑽的疑難雜症。但在IT 世界很不同的是,高科技醫療設備一臺動輒數千萬上億元,來自Sysinternals的這批神兵利器卻不花你一毛錢。

5分鐘快速找出「鬧鬼」程式的錯誤
舉個例子來說明Sysinternals的好用。公司裡有臺經常「鬧鬼」的測試機器(因為經常發生一些令人無法理解的錯誤,就好像鬧鬼),有天執行某支ASPX時,又發生了錯誤,訊息如下:
Could not load file or assembly 'System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Access is denied.
一般人遇到此種狀況,除了重灌.NET Framework、IIS、Windows,或是去行天宮拜拜跟改行不寫程式之外,多半束手無策。但有Process Monitor在手,情況就不一樣了。

遇到拒絕存取(Access Denied)型的錯誤,我的反射動作就是開啟Process Monitor;這個錯誤訊息精確地指出,無法存取的檔案是System.EnterpriseServices.DLL,因此要額外多加個路徑包含「System.EnterpriseServices」的過濾條件,再瀏覽一次問題URL,我立即就找到拒絕存取的證據。

我用「Jump To」直接跳至有問題資料夾,檢查權限果然發現該目錄只剩下SYSTEM跟Administrators群組的使用者有權讀取,難怪用NETWORK SERVICE執行的w3wp.exe會吃閉門羹。參考其他類似目錄去補上權限,鬧鬼的問題立刻就消失,前後只花了不到五分鐘!這可是比重灌輕鬆容易許多。


發生無法存取的奇怪錯誤,利用Process Monitor追查的結果,最後發現是目錄權限不足。



解決ASP程式開啟檔案過慢問題
另一個案例發生在同事有隻ASP結合VB COM的程式上,它會由資料庫提取Excel、Word、PowerPoint檔案,處理後放在暫存區供使用者下載。在某一臺Windows 2000主機上,PowerPoint的檔案下載只要幾秒鐘,但是換成Word、Excel卻需一分鐘才能完成。

一開始懷疑是掃毒軟體造成的,於是祭出Process Monitor驗證,設定Path Filter鎖定寫入Excel檔的目錄,接著我啟動IE進行下載,果然要等上一分鐘,才看得到Excel內容。

觀察檔案存取記錄發現幾點:
1.DLLHOST寫入Blah.XLS,這是寫入Excel檔的程序。
2.EXCEL.EXE讀取及寫入Blah.XLS,這應是呼叫Excel.Application處理檔案的結果。
3.未發現掃毒軟體讀取Blah.XLS的證據。
4.有個MSIEXEC.EXE在EXCEL.EXE啟動後跳出來執行。

第3點排除掉掃毒軟體的嫌疑,但第4點又給了新的線索。MSIEXEC.EXE是安裝程式,卻出現在這裡,相當可疑。我想起從Office 2000/XP起,每個使用者首次使用Word/Excel時,都要歷經初始化的過程,會有Progress Bar顯示進度,甚至要求讀取Office安裝光碟;但只要初始化過,以後就可直接開啟Word/Excel。而MSIEXEC.EXE,極有可能是初始化時啟動的。

由於Excel被ASP呼叫時,初始化發生在背景,缺少了必要的人為互動,因此始終未能順利完成,導致了每次叫用Excel.Application都要經歷一次初始化逾時失敗。如此一來,就能解釋了開啟Word/Excel特別耗時的原因。

解決方法很簡單,找出呼叫Excel.Application的COM+ Application執行身份,使用該帳號登入Windows本機,分別啟動一次Word及Excel,果然彈出了初始化訊息。完成後,ASP處理Word/Excel的過程就快得跟飛的一樣了。

透過這些案例,可以見證Process Monitor解決問題真的很有一套。記得有回遇到一個難纏的程式相容問題,逼得我必須使用微軟電話技術支援服務,當時客服工程師要我蒐集問題發生過程的情資,提供他們做深入分析。對方相當慎重其事地介紹給我一套功能強大的監看蒐證工具,結果就是Process Monitor,可見他也是官方相當推崇的工具,更是從事系統管理這一行,不可或缺的吃飯傢伙。

Process Monitor整合File Monitor及Registry Monitor兩項工具,方便查尋檔案存在或權限問題,以及觀察應用程式存取Registry的情況。

發生無法存取的奇怪錯誤,利用Process Monitor追查的結果,最後發現是目錄權限不足。

作者簡介:
Windows Sysinternals實戰專家─李明儒
微軟MVP,任職金融機構。經歷十年的IT職場生涯,依然無怨無悔地選擇技術鑽研這條路。應用Process Explorer的實用技巧

實戰王doggy :(iT邦初學者9級)
Process Explorer是Sysinternals中相當好用的工具,可以用來查詢程序之間的階層關係、了解程序開啟哪些檔案,或使用到哪些DLL,或是查看完整的系統資訊等。


Sysinternals中的Process Explorer,可以用來了解主機執行程序的狀況或是詳細的系統資訊。



在啟動Process Explorer後,可以看到各執行程序之間的階層關係,例如圖中的notepad++.exe,明顯是由WinKey.exe執行啟動的。

另外,列表中顏色的區隔,也很容易用來判斷執行檔的類型。例如黃色代表.NET 的應用程式;紫色代表包裝過的程式,有可能是中毒的執行檔,或是用UPX(the Ultimate Packer for eXecutables)工具程式壓縮過的程式;粉紅色代表該程序為 Windows服務。如果想要查詢顏色代表的意義,可以從功能選單的「Options 」中的「Configure Highlighting」查到完整的顏色定義,而顏色也可以自行定義。

如果想查看程序載入的 DLL或開啟的目錄、檔案、事件、機碼、執行緒等,利用Process Explorer查詢。如有必要,也可以在Process Explorer內強制關閉特定的處理程序,不過這個動作通常會造成原有程式出錯或中斷執行,除非必要,否則不太建議這麼做,以免發生無法預期的狀況。


System Information提供詳細完整的系統運作狀況,可以追查了解系統瓶頸所在。



有時我們會想知道,電腦變慢的原因出在哪裡,究竟是處理器、記憶體或是磁碟的I/O影響程式執行速度,這時,透過「System Information」(位於View中,或直接按Ctrl + I的快速鍵),整臺主機的運作狀況,立刻就可以一目瞭然。Filemon揪出木馬程式藏身的所在

認真獎fishk(iT邦初學者1級):
早在Sysinternals還未併入Microsoft之前,就已經接觸相關工具。其中不少工具,都因不同的狀況,而有不同的實戰經驗,提出幾個案例給大家參考:

Filemon
大約3、4年前,為了解決一個奇怪的電腦問題,而使用到Filemon。
當時是有一臺電腦定時產生一個木馬檔案,雖然防毒軟體可以偵測並掃除,但是防毒軟體卻無法追查到究竟木馬程式藏身在哪裡,這時候Filemon就可以派上用場了。

Filemon可以偵測Windows中的檔案是由哪隻程式產生,於是看準下一個木馬檔案產生的時間,使用Filemon監看,終於找出原凶,解決掉這個木馬程式威脅事件,當時就有一個深刻的體認,光靠防毒程式是不夠的,系統管理員還需有像這樣好用的工具。

Process Explorer
發生在幾年前的另一個木馬事件,我是用Process Explorer來解決問題。當時某臺電腦被植入木馬,它會定時與外部的主控台連繫傳送訊息,而且防毒程式偵測不到。於是先使用Process Explorer檢查是否有異常程式,一開始是無功而返,因為上面的程式都看不出有任何異常。

為了找出究竟是哪隻程式對外發送訊息,就先安裝一套個人防火牆,才發現是svchost.exe這隻Windows主要程式在對外傳送訊息,原來它被DLL Injection手法攻擊了。

於是Process Explorer又可以派上用場,因為它可以觀看每支程式連結的DLL程式。最後終於順利揪出異常的DLL,解決了這次木馬危機。

Autoruns
早期的防毒程式沒有偵測spyware的功能,提供spyware偵測的軟體也不多。因此我常用Autoruns這隻程式,檢查Windows啟動時會執行那些程式,以及IE啟動時會呼叫哪些BHOs(Browser Helper Objects)及相關的DLLs。

使用Autoruns之後,才知道原來Windows啟動時,可以自動執行程式的位置竟然有這麼多;相對的,這些位置都是有可能被木馬程式利用危險區域,而必須多加注意。

此外,Autoruns也提供命令列底下執行的程式autorunsc.exe,如果想觀察電腦在安裝某些程式後,Windows啟動區的變化,可以使用下面指令,比對、備份執行程式安裝前、後的啟動狀態。

autorunsc -a -d -e -s -w -c >> %COMPUTERNAME%autorunYYMMDD.csv

除了上面提到的三項工具,TCPView、PsTools等,也是我常用的程式,大家也可以試著運用在自己的工作上。能直接找出系統滿載的真正原因

認真獎davistai:(iT邦好手1級)
第一次想到使用Sysinternals,是因為發現系統一直處在忙碌狀態,處理器使用率呈現滿載。

然而從工作管理員只能看到程式名稱,其他如程式來源、相關DLL或處理程序就不得而知。為了解決上述的問題,才去下載Sysinternals。一開始試用了幾個程式,有些並不適合自己所需,像是Filemon或Procmon,最後發現了Process Explorer,發現它相當好用。

Process Explorer可以從「description」和「Company」中,找出可疑程式的基本資料,也可清楚知道現在系統中所有程序運作情形與占用資源狀況。

另外我們也常發現一堆svchost不知道在執行什麼程式,只要從Process Tree中檢視,就可以了解,要是想要砍掉異常的程序,只要按右鍵選擇「Kill」或直接按Delete鍵就可以了。

另外,Autoruns也是不錯的工具,在監控DLL上,也提供更多關於系統服務或應用程式的細節資訊。它預設是顯示所有的資訊,如果不需要看這麼詳細,也可以選其他tag過濾掉。加快建立虛擬作業系統

Joychen(iT邦初學者10級):
我曾經在Virtual Machine中使用過NewSID。因為在虛擬的Lab環境中,一一裝起作業系統太耗時,較快的方式是直接使用full clone的方式建立。這時用NewSID重新建立新機器的SID,就比使用sysprep快多了!

另外,在我建立的伺服器中都會使用BgInfo,這些電腦上的配備、名稱等資訊,全都呈現在桌布上,不論給老闆還是自己看,通通一目瞭然,看起來也更專業。

TcpView常使用在抓Client端蠕蟲的時候。當掃毒軟體找不到、又有異常流量,而且Netstat也沒辦法看到完整資訊的時候,TcpView就有用了。


用NewSID,可以重新建立電腦的SID,避免重複在網域上登錄,造成衝突。

熱門新聞

Advertisement