• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
            簡單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            分析解決Internet Explorer崩潰一例

            Posted on 2009-08-20 09:04 S.l.e!ep.¢% 閱讀(2197) 評(píng)論(0)  編輯 收藏 引用 所屬分類: WinDbg

            分析解決Internet Explorer崩潰一例


            ?

            本文為Eric原創(chuàng)技術(shù)文章,如需轉(zhuǎn)載請事先與我取得聯(lián)系。首發(fā)于WinOS.cn,僅限站內(nèi)交流分享

            ?


            通過本文,您將了解到:

            ??l IE 瀏覽器產(chǎn)生崩潰的幾類原因

            ??l 為什么發(fā)送錯(cuò)誤匯報(bào)之后得到的官方反饋鏈接不能夠幫助徹底解決崩潰問題

            ??l 發(fā)送給微軟的錯(cuò)誤匯報(bào)里面都是什么內(nèi)容

            ??l WinDbg 調(diào)試程序的進(jìn)階使用以及相關(guān)命令

            ??l 如何鑒別動(dòng)態(tài)鏈接庫文件是否真正為微軟公司發(fā)行以及真文件的幾點(diǎn)特征

            ??l 解決IE崩潰的基本分析思路


            ?


            ? ? 本月22日,一個(gè)名叫“120”的朋友在Windows Client板塊發(fā)表了一個(gè)求助帖,標(biāo)題為“IE6自動(dòng)關(guān)閉”。這幾天,通過遠(yuǎn)程協(xié)助等手段,在機(jī)主的極力配合之下,問題終于得以解決。在這里,我們進(jìn)行一個(gè)IT Show Case,將整理過后的分析解決過程的核心部分發(fā)表成此文,為大家提供一個(gè)解決此類問題的基本思路及分析方法,也借此文在這里與大家進(jìn)行一個(gè)關(guān)于此問題的交流。


            ? ? 說到IE的崩潰,也許那簡直就是家常便飯,見怪不怪了。本案例中,機(jī)主的描述也是打開一些網(wǎng)站的時(shí)候,IE自動(dòng)關(guān)閉而且要求錯(cuò)誤報(bào)告,機(jī)主的環(huán)境是Microsoft Windows XP Pro with SP2,錯(cuò)誤模塊為Urlmon.dll。根據(jù)經(jīng)驗(yàn),這并不是引起崩潰的元兇,那么我需要對(duì)機(jī)主的崩潰進(jìn)行一個(gè)具體的分析。下面就是這個(gè)崩潰的截圖:

            ?

            ?


            ? ? 雖然微軟公司在IE的發(fā)行中一直在改善其穩(wěn)定性,但是就算較新的IE6、IE7甚至于目前還在Beta2測試階段的IE8都仍然會(huì)出現(xiàn)不穩(wěn)定現(xiàn)象,或掛起、或崩潰,只是相對(duì)于以前的版本要稍稍穩(wěn)定一些了。細(xì)心的朋友可能發(fā)現(xiàn),如果您的Windows啟用了程序錯(cuò)誤匯報(bào),那么IE崩潰之后會(huì)要求您發(fā)送一個(gè)錯(cuò)誤報(bào)告給微軟,有的時(shí)候還會(huì)立即反饋一個(gè)用于解決問題的鏈接,點(diǎn)擊之后將前往微軟聯(lián)機(jī)崩潰分析頁面,提供一些安裝最新補(bǔ)丁、使用防病毒軟件、禁用第三方加載項(xiàng)之類的解決方案,而往往有的用戶進(jìn)行這些操作之后卻仍不能夠解決問題,是什么原因呢?

            ? ? 其實(shí),IE的崩潰無非有這樣幾類情況,即加載了不穩(wěn)定的插件、有漏洞被利用、自身不穩(wěn)定、缺少文件、被流氓軟件劫持、存有木馬或者病毒。微軟的反饋鏈接應(yīng)該來說對(duì)于前三種情況是最有效的,而對(duì)于后面的幾種較為復(fù)雜多變的情況,往往是無能為力的。其中有一個(gè)重要原因——有的時(shí)候真正引起崩潰的文件并沒有包含在發(fā)送給微軟的錯(cuò)誤報(bào)告中,也就是說,微軟分析的時(shí)候,根本意識(shí)不到IE加載了這樣的一個(gè)問題組件。關(guān)于這一點(diǎn),本例就是一個(gè)很好的證明,本例中真正引起崩潰的是msxmlfilta.dll,我將發(fā)送給微軟的錯(cuò)誤匯報(bào)技術(shù)信息附在本文的附件errorperort_to_Microsoft.rar之中(前往http://bbs.winos.cn/viewthread.php?tid=50046下載),有興趣的朋友可以打開來查找一下這個(gè)DLL,可以發(fā)現(xiàn)是查找不到的。


            ? ? 如果我們使用WinDbg的附加到進(jìn)程進(jìn)行調(diào)試的功能,可以得到IE加載了這個(gè)DLL,由于篇幅有限,下面僅展示其中的一個(gè)片段:(完整的進(jìn)程分析信息位于附件的ProcessAnalysis.rar,前往http://bbs.winos.cn/viewthread.php?tid=50046下載)

            ?

            代碼:
            ModLoad: 77bb0000 77bc5000? ?C:\WINDOWS\system32\MSACM32.dll
            ModLoad: 77ba0000 77ba7000? ?C:\WINDOWS\system32\midimap.dll
            ModLoad: 038f0000 0391a000? ?C:\WINDOWS\system32\msxmlfilta.dll
            ModLoad: 69760000 69776000? ?C:\WINDOWS\system32\faultrep.dll
            ModLoad: 76f20000 76f28000? ?C:\WINDOWS\system32\WTSAPI32.dll
            (334.cb0): Break instruction exception - code 80000003 (first chance)
            eax=7ffde000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005
            eip=7c921230 esp=0396ffcc ebp=0396fff4 iopl=0? ?? ?? ?nv up ei pl zr na pe nc
            cs=001b??ss=0023??ds=0023??es=0023??fs=0038??gs=0000? ?? ?? ?? ? efl=00000246
            ntdll!DbgBreakPoint:
            7c921230 cc? ?? ?? ?? ???int? ???3

            ?


            ? ? 由于遠(yuǎn)程協(xié)助受到網(wǎng)絡(luò)速度的影響,不能夠進(jìn)行更多地分析,于是我使用了“.dump /ma IE.DMP”命令生成了一個(gè)當(dāng)前崩潰IE的Minidump內(nèi)存轉(zhuǎn)儲(chǔ)文件,然后機(jī)主通過網(wǎng)絡(luò)發(fā)送給我做進(jìn)一步分析。

            ? ? 得到IE.DMP之后,使用WinDbg進(jìn)行加載。使用“!Analyze -v”命令進(jìn)行分析,WinDbg得到了自動(dòng)判別出的一個(gè)引起問題的模塊——faultrep.dll。下面是相關(guān)的片段:


            代碼:
            PRIMARY_PROBLEM_CLASS:??STATUS_BREAKPOINT
            BUGCHECK_STR:??APPLICATION_FAULT_STATUS_BREAKPOINT
            MODULE_NAME: faultrep
            STACK_COMMAND:??~0s ; kb
            FAILURE_BUCKET_ID:??APPLICATION_FAULT_STATUS_BREAKPOINT_faultrep!StartDWException+5df
            BUCKET_ID:??APPLICATION_FAULT_STATUS_BREAKPOINT_faultrep!StartDWException+5df
            Followup: MachineOwner

            ?


            ? ? 真的是它么?使用“lmvm faultrep”命令,得到以下結(jié)果:


            ?

            代碼:
            start? ? end? ?? ???module name
            69760000 69776000? ?faultrep? ?(pdb symbols)? ?? ?? ? DownstreamStore\faultrep.pdb\3894E0C34E6A43099670AE3EB5AFD94D1\faultrep.pdb
            ? ? Loaded symbol image file: faultrep.dll
            ? ? Image path: C:\WINDOWS\system32\faultrep.dll
            ? ? Image name: faultrep.dll
            ? ? Timestamp:? ?? ???Tue Aug 17 07:37:33 2004 (4121453D)
            ? ? CheckSum:? ?? ?? ?0001F72E
            ? ? ImageSize:? ?? ???00016000
            ? ? File version:? ???5.1.2600.2180
            ? ? Product version:??5.1.2600.2180
            ? ? File flags:? ?? ? 0 (Mask 3F)
            ? ? File OS:? ?? ?? ? 40004 NT Win32
            ? ? File type:? ?? ???1.0 App
            ? ? File date:? ?? ???00000000.00000000
            ? ? Translations:? ???0804.04b0
            ? ? CompanyName:? ?? ?Microsoft Corporation
            ? ? ProductName:? ?? ?Microsoft(R) Windows (R) 2000 Operating System
            ? ? InternalName:? ???FAULTREP.DLL
            ? ? OriginalFilename: FAULTREP.DLL
            ? ? ProductVersion:? ?5.1.2600.2180
            ? ? FileVersion:? ?? ?5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)
            ? ? FileDescription:??Windows Error Reporting
            LegalCopyright:? ?(C) Microsoft Corporation. All rights reserved.

            ?


            ? ? 很明顯,這個(gè)DLL是Windows錯(cuò)誤報(bào)告的核心組件之一,并不是引起問題的元兇。所以對(duì)于WinDbg的分析,我們還需要加以思考才能判別出問題的根源。那么下一步就是要查明問題的元兇了。使用“kb”命令顯示線程堆棧信息。下面是命令結(jié)果:


            ?

            代碼:
            ChildEBP RetAddr??Args to Child? ?? ?? ?? ???
            0013aa64 7c92e9ab 7c8094e2 00000002 0013aa90 ntdll!KiFastSystemCallRet
            0013aa68 7c8094e2 00000002 0013aa90 00000001 ntdll!ZwWaitForMultipleObjects+0xc
            0013ab04 7c80a075 00000002 0013ac34 00000000 kernel32!WaitForMultipleObjectsEx+0x12c
            0013ab20 6976763c 00000002 0013ac34 00000000 kernel32!WaitForMultipleObjects+0x18
            0013b4b4 697682b1 0013cbf0 ffffffff 00198312 faultrep!StartDWException+0x5df
            0013c528 7c8633b1 0013cbf0 ffffffff 0013ee48 faultrep!ReportFault+0x533
            0013cbc8 75f1ea3f 0013cbf0 77c05cf5 0013cbf8 kernel32!UnhandledExceptionFilter+0x587
            0013cbd0 77c05cf5 0013cbf8 00000000 0013cbf8 browseui!BrowserProtectedThreadProc+0x65
            0013cbf8 7c9237bf 0013cce4 0013ee5c 0013cd00 msvcrt!_except_handler3+0x61
            0013cc1c 7c92378b 0013cce4 0013ee5c 0013cd00 ntdll!ExecuteHandler2+0x26
            0013cccc 7c92eafa 00000000 0013cd00 0013cce4 ntdll!ExecuteHandler+0x24
            0013cccc 75c71ed3 00000000 0013cd00 0013cce4 ntdll!KiUserExceptionDispatcher+0xe
            0013cfd4 75c73099 001d3818 00237d3c 00237d40 urlmon!CTransaction::GetBindInfo+0x10
            0013cffc 011b68d7 00237c00 0013d054 017c8dc0 urlmon!CINet::Start+0x5f
            WARNING: Stack unwind information not available. Following frames may be wrong.
            0013d034 011b675b 0013d054 001d3810 017c8dc0 msxmlfilta!DllUnregisterServer+0x1a27
            0013d104 011b64e4 011b64f5 00000000 017c8d8c msxmlfilta!DllUnregisterServer+0x18ab
            0013d108 011b64f5 00000000 017c8d8c 001d3824 msxmlfilta!DllUnregisterServer+0x1634
            0013d130 7c9306eb 017c4b00 00150000 00000000 msxmlfilta!DllUnregisterServer+0x1645
            001ad858 772f2f3a 622e7777 75646961 6d6f632e ntdll!RtlAllocateHeap+0xeac
            001ad858 00000000 622e7777 75646961 6d6f632e 0x772f2f3a

            ?


            ? ? 請注意到字樣WARNING后面的部分!同時(shí)我們給出這個(gè)關(guān)鍵部分的截圖:

            ?

            ?


            ? ? 從圖中清晰地可以看到,這里的函數(shù)才是問題的關(guān)鍵,函數(shù)是msxmlfilta.dll提供的。回顧整個(gè)分析過程,發(fā)現(xiàn)WinDbg始終無法為它加載符號(hào)(Symbols),因此這個(gè)應(yīng)該不是微軟的文件吧。(完整的Minidump分析結(jié)果見附件DumpAnalysis.rar,前往http://bbs.winos.cn/viewthread.php?tid=50046下載)我們需要察看它的屬性得到證實(shí)。我通過互聯(lián)網(wǎng)得到了這個(gè)文件的一個(gè)樣本,有的網(wǎng)友說它是來自于Deamon Tools虛擬光驅(qū)的,而且在機(jī)主那兒得到證實(shí),他的確安裝了這個(gè)虛擬光驅(qū)。但是,查看屬性時(shí)我發(fā)現(xiàn),這個(gè)文件的屬性具有仿冒特征,下面是它與右邊的一個(gè)微軟發(fā)行組件的對(duì)比:


            ?

            ?

            ? ? 我們知道,微軟官方發(fā)行的組件都有描述,而這個(gè)文件的描述MsHttpApp.dll也未免不正常吧,再有就是微軟的組件版本信息中版本號(hào)應(yīng)該與Windows一致,或者與其軟件(如IE)的版本號(hào)一致才對(duì),5.1.2600為XP的版本號(hào),現(xiàn)在哪一個(gè)Windows的系統(tǒng)組件還是1.0.0.1呢?而且瑞星殺毒軟件報(bào)告它為風(fēng)險(xiǎn)-廣告程序,如圖:

            ?

            ?


            ? ? 通過測試,并不是所有的殺毒軟件均報(bào)告該文件,因此機(jī)主的殺毒軟件并沒有報(bào)告它。但是這個(gè)文件又是如何造成IE崩潰的呢?我們使用exeScope進(jìn)行函數(shù)以及關(guān)聯(lián)的分析,如下圖:

            ?

            ?


            ? ? 很明顯,這個(gè)文件就提供四個(gè)函數(shù)功能,大多都是與DLL注冊/反注冊、加載/卸載有關(guān)的。而且在左欄我們發(fā)現(xiàn),它的導(dǎo)出為一個(gè)MsHttpApp.dll,也就是說它可以供其調(diào)用,將結(jié)果傳遞給MsHttpApp.dll。問題就在這里了,機(jī)主證實(shí)他的計(jì)算機(jī)上并沒有存在這樣一個(gè)MsHttpApp.DLL。于是我們將這個(gè)來歷不明的msxmlfilta.DLL刪除即可解決問題。(本例中msxmlfilta.DLL并沒有被注冊占用,因此可以直接刪除。萬一被注冊占用,請使用“regsvr32 /u msxmlfilta.DLL”命令進(jìn)行反注冊,然后再刪除即可)


            ?

            ? ? 到這里,問題就解決了。但是我仍存有幾個(gè)疑問。這個(gè)msxmlfilta.DLL真的來源于Deamon Tools虛擬光驅(qū)嗎?是它的一個(gè)組件嗎?為什么具有仿冒特征?為什么被部分反病毒軟件報(bào)告?它究竟是用來執(zhí)行什么功能的?由于最近比較忙,時(shí)間有限,因此只有等到日后再架設(shè)環(huán)境進(jìn)行進(jìn)一步分析了,這需要分析Deamon Tools的完整安裝和使用過程。如果您已經(jīng)有此方面的經(jīng)歷或者知道相關(guān)的信息,也請?jiān)诖烁嬖V我,我們一同來探討。


            ? ? 謝謝大家!

            • 白白

              白白

              2008-11-25 15:35:41

              恭喜!您這篇博文在圈子“明人博”由“白白”加為精華博文!

              來自:“明人博“圈子

            • 老六月雪

              老六月雪

              2008-11-25 18:25:47

              欣賞你的精彩,品味你的內(nèi)涵。

              博友仔細(xì)咀嚼,圈子精心收藏。

              百業(yè)精英匯聚中國博協(xié),百科全書就是圈子博文!

              中國博客家協(xié)會(huì)圈誠邀朋友們!

              來自:“中國博客家協(xié)會(huì)“圈子

            • 新浪網(wǎng)友

              2008-12-08 13:01:09

              Eric·華煜Hello:

              黃b 5G邱楊
              義l 2o澤謹(jǐn)
              達(dá)o 歲o當(dāng)華
              出g 金gD泄
              對(duì). 凱lJ底
              愛s 特e 學(xué)
              的i 蘿 一生
              體n 仿E夜妹
              悟a 名a賺 
              愛. 畫r4小
              了c  t0天
              才o 裸h0搞
              懂m 身  笑
               . 募重 耶
               c 2現(xiàn)郎誕
               n 5古姑老
               / 億羅來人
               h  馬探 
               b  !班 
               k     
               k     
               k     
               g     
               o     
               n     
               g     
               7     
               4     

            • 新浪網(wǎng)友

              2009-02-16 02:19:59

              msxmlfilta.dll?MsHttpApp.dll?來源百度推廣代碼,用來彈出廣告,自動(dòng)打開網(wǎng)頁,現(xiàn)在的網(wǎng)吧管理和其他的軟件都有這東西,性質(zhì):木馬。名稱:Adware.BHO-849.

            亚洲?V乱码久久精品蜜桃| 久久久久九国产精品| 久久久无码精品午夜| 无码精品久久久天天影视| 亚洲一本综合久久| 国产激情久久久久久熟女老人| 久久精品国产91久久麻豆自制 | 亚洲精品国产字幕久久不卡 | 9999国产精品欧美久久久久久| 91麻豆国产精品91久久久| 国产精品欧美久久久久天天影视| 99久久99久久精品国产片果冻 | 亚洲欧美日韩久久精品第一区| 久久天天躁狠狠躁夜夜av浪潮| 69久久夜色精品国产69| 伊人久久大香线蕉综合Av| 综合久久精品色| 久久久久亚洲?V成人无码| 曰曰摸天天摸人人看久久久| 国产精品99精品久久免费| 久久综合噜噜激激的五月天| 99久久99久久精品国产片果冻| 香蕉久久永久视频| 久久精品三级视频| 精品无码久久久久久国产| 99久久亚洲综合精品成人| 久久久国产精品网站| 久久电影网一区| 久久久久中文字幕| 99久久国产亚洲高清观看2024| 久久亚洲国产欧洲精品一| 欧美综合天天夜夜久久| 欧美一区二区精品久久| 精品久久久久一区二区三区| a级毛片无码兔费真人久久| 婷婷综合久久狠狠色99h| 91精品国产91久久久久久蜜臀| 91久久精品电影| 久久无码人妻精品一区二区三区| 久久青青草原精品国产不卡| 2021最新久久久视精品爱|