iT邦幫忙

25

[IT實戰專家開講] Windows Sysinternals技巧大公開

  • 分享至 

  • xImage
  •  

IT實戰經驗大募集,我們除了募集邦友們的經驗,也請到專家們分享他的經驗。以下是實戰專家李明儒分享他使用Windows Sysinternals的經驗與具體遇到的案例。
2001年透過搜尋引擎逛到http://www.sysinternals.com,看到一大票輕薄短小卻功能強悍的免費工具,猶如發現桃花源,Mark Russinovich 跟Bryce Cogswell兩個人幾乎比微軟還懂Windows,才寫得出這麼鞭辟入裡的系統工具。到2006年中,Microsoft併購了SysInternals,把這兩位天才延攬成微軟的人馬,SysInternals同時改名為Windows Sysinternals,漸漸變成Windows SDK的一部分。

在朋友同事眼中,我是個專治電腦疑難雜症的高手,也酷愛挑戰刁鑽難解的電腦問題(說起來也算天生賤骨頭,哈!)。別人處理五六天還搞不定的電腦問題,大伙避之惟恐不及,我偏愛自告奮勇插一腳,而最神奇的往往是交到我手上不到半小時就搞定,引來眾人驚嘆的眼光。其實他們不知道,看似神乎其技的背後,我只不過是比一般人更懂得善用工具、知道怎麼下Google關鍵字,加上邏輯夠清楚跟有一點點經驗而已。只要有心,每個人都能成為優秀的茶包射手(Trouble-Shooter)。工欲善其事,必先利其器,我最常用的工具,便來自SysInternals。

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

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

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

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

分享個人利用Process Monitor迅速破案的成功經驗:

【Process Monitor 5分鐘破案的經典案例】

公司裡有台"鬧鬼"(註)的測試機器,老愛出些稀奇古怪的錯誤。執行某支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型的Error,我的反射動作就是開啟Process Monitor;這個錯誤訊息精確地指出無法存取的檔案是System.EnterpriseServices.dll,因此加個Path Contains "System.EnterpriseServices"的Filter,再瀏覽一次問題URL,立即就找到Access Denied的證據。

用Jump To直接跳至GAC下的問題Folder,檢查權限果然發現該目錄只剩下SYSTEM跟Administrators有權讀取,難怪用NETWORK SERVICE執行的w3wp.exe會吃閉門羹。參考其他類似目錄,補上權限問題就消失! 前後只花了不到五分鐘。

藉由Process Monitor快速找出存取權限被拒的檔案,補上權限就解決問題,是不是比重灌來得輕鬆容易呢?

【會莫名其妙卡住的ASP程式】

同事有隻ASP+VB COM的程式,會由資料庫提取Excel、Word、PowerPoint檔案,處理後放在暫存區供使用者下載。在某一部Windows 2000主機上,發生下載Word、Excel需一分鐘才能完成,PowerPoint卻只要幾秒鐘的狀況。(其他主機上,都只需幾秒)
面對這個問題,優先懷疑是掃毒軟體搞鬼。要驗證不難,拿出Process Monitor,設定Path Filter鎖定寫入Excel檔的目錄,接著啟動IE進行下載,果然要等上一分鐘才看得到Excel內容。

由ProcMon所觀察的檔案存取記錄發現幾點:

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

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早就是這一行不可以或缺的吃飯傢伙囉,大家千萬不可錯過。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
魯大
iT邦高手 1 級 ‧ 2008-07-16 12:08:29

好神奇..
不知道市面是否有相關的書籍在介紹這些工具
有了這些工具不用怕一些有的沒有的問題了...

0
davistai
iT邦大師 1 級 ‧ 2008-07-16 17:11:00

帥!這才是精彩的實戰經驗,非常佩服啊!

0
davistai
iT邦大師 1 級 ‧ 2008-07-16 17:24:09

不過如果系統跑了某程式hang住了,好像連這些小程式都跑不起來,也就沒輒了呀@@|||

0
海綿寶寶
iT邦大神 1 級 ‧ 2008-07-16 19:43:39

推「去行天宮拜拜」+1

大家很努力、沒人犯什麼錯,
案子還是跑得不順,
我就會吆喝著大家去行天宮拜拜

只是不知道恩主公管不管 IT 界的事就是了...

0
jjw
iT邦研究生 1 級 ‧ 2008-07-16 21:48:48

謝謝分享

0
jerry640
iT邦新手 1 級 ‧ 2008-07-17 00:12:52

分析的真透測。
實際上常遇到的都是整年沒關機,一遇到關機後就開不起來的窘境~硬體還真是不能用太久

0
jan0939
iT邦研究生 2 級 ‧ 2008-07-17 07:17:50

跟人一樣,不能一直被壓榨太9.

0
kuochiahao
iT邦研究生 1 級 ‧ 2008-07-17 15:44:40

謝謝分享

0
fishk
iT邦大師 1 級 ‧ 2008-08-03 00:36:53

嗯, 解釋的蠻精彩的.

0
s6020611
iT邦新手 3 級 ‧ 2009-11-30 19:57:49

謝分享@@@
最近開始爬文~~~~
搜尋一些關於防毒或一些病毒相關的文章來閱讀@@@
謝啦QQ

我要留言

立即登入留言