大家知道嗎?微軟發(fā)布的具有數(shù)字簽名的SP2才是正式版本(右擊打開文件屬性窗口可以查看到圖1所示的數(shù)字簽名信息),這是怎么一回事呢?
在Windows 2000以前的Windows版本中,安裝操作系統(tǒng)之外的軟件,可能會覆蓋掉一些共享的系統(tǒng)文件,例如動態(tài)鏈接庫(*.dll文件)、可執(zhí)行文件(*.exe),這樣可能會導致程序運行不穩(wěn)定、系統(tǒng)出現(xiàn)故障,這主要是由于所謂的DLL陷阱所導致。
為了徹底解決這一問題,在Windows 2000和Windows XP中,微軟引入了“Windows文件保護”機制用來防止替換受到保護的系統(tǒng)文件,包括*.sys、*.dll、*.ocx、*.ttf、*.fon、*.exe等類型的文件,Windows文件保護在后臺自動運行,可以保護Windows安裝程序安裝的所有文件。
Windows文件保護能夠檢測到其他程序要替換或移動受保護的系統(tǒng)文件的意圖,那么它是依據(jù)什么來檢測的呢?其實,Windows文件保護是通過檢測文件的數(shù)字簽名,以確定新文件的版本是否為正確的Microsoft版本,如果文件版本不正確,Windows文件保護會自動調(diào)用dllcache文件夾或Windows中存儲的備份文件替換該文件,如果Windows文件保護無法定位相應(yīng)的文件,那么會提示用戶輸入該位置或插入安裝光盤。
二、認識數(shù)字簽名
數(shù)字簽名是允許用戶驗證的,如果某文件沒有有效的數(shù)字簽名,那么將無法確保該文件確實來自它所聲明的來源,或者無法確保它在發(fā)行之后未被篡改過(可能由病毒篡改)。此時,比較安全的做法是,除非你確定該文件的創(chuàng)建者而且知道其內(nèi)容,那么才能安全地打開,否則建議不要輕易打開該文件。凡是通過了微軟數(shù)字簽名的硬件或軟件,其外包裝上一般都會出現(xiàn)“為Microsoft Windows XP設(shè)計(Designed for Microsoft Windows XP)”的徽標。
在計算機上安裝新軟件時,系統(tǒng)文件和設(shè)備驅(qū)動程序文件有時會被未經(jīng)過簽名的或不兼容的版本覆蓋,導致系統(tǒng)不穩(wěn)定。隨Windows XP一起提供的系統(tǒng)文件和設(shè)備驅(qū)動程序文件都有Microsoft數(shù)字簽名,這表明這些文件都是原始的未更改過的系統(tǒng)文件,或者它們已被Microsoft同意可以用于Windows。在Windows 2000/XP中提供了“文件簽名驗證”工具(見圖2),Windows 9x則提供了“系統(tǒng)文件檢查器”,我們可以通過這些工具來檢查系統(tǒng)文件的數(shù)字簽名狀態(tài)。
默認情況下,Windows文件保護始終處于啟用狀態(tài),同時允許Windows數(shù)字簽名文件替換現(xiàn)有文件。目前,簽名文件通過以下方式進行分發(fā):Windows Service Pack、修補程序分發(fā)、操作系統(tǒng)升級、Windows Update、Windows設(shè)備管理器/類別安裝程序。
三、數(shù)字簽名實例秀
說了半天,除了保護系統(tǒng)文件外,數(shù)字簽名究竟能夠給普通用戶帶來哪些好處呢?下面,我們通過幾個實例來進行說明:
實例1:驗證Windows XP的核心文件是否被替換
現(xiàn)在Windows XP版本有大企業(yè)版本、聯(lián)想隨機版本等,那么如何來驗證手頭的Windows XP屬于微軟原版呢?
這里,我們只要檢查Windows XP的系統(tǒng)文件是否能夠通過文件簽名驗證即可。在“開始→運行”對話框鍵入“sigverif”命令打開“文件簽名驗證”窗口,點擊“開始”按鈕,首先會建立文件列表,稍候會看到圖3所示窗口,這里未經(jīng)過數(shù)字簽名的文件大都是驅(qū)動程序文件,只要winlogon.exe、licdll.dll兩個文件未出現(xiàn)在列表中,那么說明你的Windows XP未被篡改過。
實例2:驅(qū)動程序簽名
Windows XP自帶的驅(qū)動程序都通過了微軟的WHQL數(shù)字簽名,在查看通過數(shù)字簽名的驅(qū)動程序時會看到一個圖標。不過當我們在安裝或升級設(shè)備驅(qū)動程序時,經(jīng)常會看到圖4所示的警告信息,說是“沒有通過Windows徽標測試,無法驗證它同Windows XP的相容性”,其實這是Windows XP的文件保護功能在起作用,以降低用戶安裝無保護驅(qū)動程序的風險,當然我們只要選擇“仍然繼續(xù)”按鈕就可以忽略這一提示并完成驅(qū)動程序的安裝。
假如你覺得這個警告提示框非常煩人,那么可以打開“系統(tǒng)屬性”窗口,切換到“硬件”選項頁,點擊“驅(qū)動程序簽名”按鈕進入圖5窗口,在“文件簽名驗證”下有3個選項:
忽略:允許該計算機安裝所有設(shè)備驅(qū)動程序,無論其是否具有數(shù)字簽名。
警告:當安裝程序試圖安裝沒有數(shù)字簽名的設(shè)備驅(qū)動程序時,將顯示警告消息,這是Windows XP的默認行為。
阻止:阻止安裝程序安裝那些沒有數(shù)字簽名的設(shè)備驅(qū)動程序。
很明顯,選中“忽略”選項,并設(shè)置為系統(tǒng)默認選項,以后安裝或升級設(shè)備驅(qū)動程序時,就不會彈出簽名驗證警告了。
實例3:將數(shù)字簽名信息寫入日志文件
打開“文件簽名驗證”窗口,點擊“高級”按鈕進入“高級文件簽名驗證設(shè)置”對話框,切換到“正在記錄”選項卡,選中“將文件簽名驗證結(jié)果保存到一個日志文件”復(fù)選框(見圖5),如果選擇“附加到現(xiàn)有日志文件”可以將新的搜索結(jié)果添加到日志文件的末尾,選中“改寫現(xiàn)有日志文件”將使用新的日志文件替換現(xiàn)有的日志文件,然后鍵入日志文件的名稱,以后就可以將搜索結(jié)果寫入文件。
假如你只是希望覆蓋日志文件,那么直接在“開始→運行”對話框中鍵入“sigverif /defscan”命令執(zhí)行即可。
實例4:禁用Windows的文件保護功能
在Windows 2000/XP的WindowsSystem32目錄下有一個名為dllcache的文件夾,其中保存了重要文件的備份,例如Windows XP的dllcache文件夾中有2169個重要文件,占用364.5MB之多。如果Windows 2000/XP發(fā)現(xiàn)某個受保護的系統(tǒng)文件被替換或損壞,那么會從dllcache文件夾中自動恢復(fù)。
如果你由于某些原因而需要騰出一部分可用空間,那么可以在“開始→運行”對話框中鍵入“sfc /purgecache”命令清空Dllcache文件夾,注意“/”前有一個英文半角的空格字符,這樣將清除保存在dllcache中的文件緩存。不過這樣一來,Windows文件保護就只能從Windows安裝光盤恢復(fù)系統(tǒng)文件了,因此你將經(jīng)常會看到提示插入Windows安裝光盤的提示,因此不建議朋友們使用該技巧,如果你希望禁用Windows文件保護的話,可以在“開始→運行”對話框中鍵入“gpedit.msc”打開“本地計算機策略→計算機配置→管理模板→系統(tǒng)”窗口,找到“Windows文件保護”組,在右側(cè)窗格中雙擊“設(shè)置Windows文件保護掃描”項,設(shè)置為“已禁用”即可,在這里還可以限制文件保護緩存的大小和指定文件保護緩存的位置。