1. 程式人生 > 實用技巧 >Windows 2000和WindowsXP中神祕的數字簽名

Windows 2000和WindowsXP中神祕的數字簽名

 大家知道嗎?微軟釋出的具有數字簽名的SP2才是正式版本(右擊開啟檔案屬性視窗可以檢視到圖1所示的數字簽名信息),這是怎麼一回事呢?

Windows2000和WindowsXP中神祕的數字簽名
圖1

  一、Windows的檔案保護功能
  在Windows 2000以前的Windows版本中,安裝操作系

統之外的軟體,可能會覆蓋掉一些共享的系統檔案,例如動態連結庫(*.dll檔案)、可執行檔案(*.exe),這樣可能會導致程式執行不穩定、系統出現故障,這主要是由於所謂的DLL陷阱所導致。

  為了徹底解決這一問題,在Windows 2000和Windows XP中,微軟引入了“Windows檔案保護”機制用來防止替換受到保護的系統檔案,包括*.sys、*.dll、*.ocx、*.ttf、*.fon、*.exe等型別的檔案,Windows檔案保護在後臺自動執行,可以保護Windows安裝程式安裝的所有檔案。

  Windows檔案保護能夠檢測到其他程式要替換或移 動受保護的系統檔案的意圖,那麼它是依據什麼來檢測的呢?其實,Windows檔案保護是通過檢測檔案的數字簽名,以確定新檔案的版本是否為正確的Microsoft版本,如果檔案版本不正確,Windows檔案保護會自動呼叫dllcache資料夾或Windows中儲存的備份檔案替換該檔案,如果Windows檔案保護無法定位相應的檔案,那麼會提示使用者輸入該位置或插入安裝光碟。

  二、認識數字簽名

  數字簽名是允許使用者驗證的,如果某檔案沒有有效的數字簽名,那麼將無法確保該檔案確實來自它所宣告的來源,或者無法確保它在發行之後未被篡改過(可能由病毒篡改)。此時,比較安全的做法是,除非你確定該檔案的建立者而且知道其內容,那麼才能安全地開啟,否則建議不要輕易開啟該檔案。凡是通過了微軟數字簽名的硬體或軟體,其外包裝上一般都會出現“為Microsoft Windows XP設計(Designed for Microsoft Windows XP)”的徽標。

  在計算機上安裝新軟體時,系統檔案和裝置驅動程式檔案有時會被未經過簽名的或不相容的版本覆蓋,導致系統不穩定。隨Windows XP一起提供的系統檔案和裝置驅動程式檔案都有Microsoft數字簽名,這表明這些檔案都是原始的未更改過的系統檔案,或者它們已被Microsoft同意可以用於Windows。在Windows 2000/XP中提供了“檔案簽名驗證”工具(見圖2),Windows 9x則提供了“系統檔案檢查器”,我們可以通過這些工具來檢查系統檔案的數字簽名狀態。

Windows2000和WindowsXP中神祕的數字簽名
圖2

  預設情況下,Windows檔案保護始終處於啟用狀態,同時允許Windows數字簽名檔案替換現有檔案。目前,簽名檔案通過以下方式進行分發:Windows Service Pack、修補程式分發、作業系統升級、Windows Update、Windows裝置管理器/類別安裝程式。

  三、數字簽名例項秀

  說了半天,除了保護系統檔案外,數字簽名究竟能夠給普通使用者帶來哪些好處呢?下面,我們通過幾個例項來進行說明:

例項1:驗證Windows XP的核心檔案是否被替換
現在Windows XP版本有大企業版本、聯想隨機版本等,那麼如何來驗證手頭的Windows XP屬於微軟原版呢?

這裡,我們只要檢查Windows XP的系統檔案是否能夠通過檔案簽名驗證即可。在“開始→執行”對話方塊鍵入“sigverif”命令開啟“檔案簽名驗證”視窗,點選“開始”按鈕,首先會建立檔案列表,稍候會看到圖3所示視窗,這裡未經過數字簽名的檔案大都是驅動程式檔案,只要winlogon.exe、licdll.dll兩個檔案未出現在列表中,那麼說明你的Windows XP未被篡改過。

Windows2000和WindowsXP中神祕的數字簽名
圖3

例項2:驅動程式簽名
Windows XP自帶的驅動程式都通過了微軟的WHQL數字簽名,在檢視通過數字簽名的驅動程式時會看到一個圖示。不過當我們在安裝或升級裝置驅動程式時,經常會看到圖4所示的警告資訊,說是“沒有通過Windows徽標測試,無法驗證它同Windows XP的相容性”,其實這是Windows XP的檔案保護功能在起作用,以降低使用者安裝無保護驅動程式的風險,當然我們只要選擇“仍然繼續”按鈕就可以忽略這一提示並完成驅動程式的安裝。

Windows2000和WindowsXP中神祕的數字簽名
圖4

  假如你覺得這個警告提示框非常煩人,那麼可以開啟“系統屬性”視窗,切換到“硬體”選項頁,點選“驅動程式簽名”按鈕進入圖5視窗,在“檔案簽名驗證”下有3個選項:

Windows2000和WindowsXP中神祕的數字簽名
圖5

  忽略:允許該計算機安裝所有裝置驅動程式,無論其是否具有數字簽名。

  警告:當安裝程式試圖安裝沒有數字簽名的裝置驅動程式時,將顯示警告訊息,這是Windows XP的預設行為。

  阻止:阻止安裝程式安裝那些沒有數字簽名的裝置驅動程式。
很明顯,選中“忽略”選項,並設定為系統預設選項,以後安裝或升級裝置驅動程式時,就不會彈出簽名驗證警告了。

  例項3:將數字簽名信息寫入日誌檔案
  開啟“檔案簽名驗證”視窗,點選“高階”按鈕進入“高階檔案簽名驗證設定”對話方塊,切換到“正在記錄”選項卡,選中“將檔案簽名驗證結果儲存到一個日誌檔案”複選框(見圖5),如果選擇“附加到現有日誌檔案”可以將新的搜尋結果新增到日誌檔案的末尾,選中“改寫現有日誌檔案”將使用新的日誌檔案替換現有的日誌檔案,然後鍵入日誌檔案的名稱,以後就可以將搜尋結果寫入檔案。

  假如你只是希望覆蓋日誌檔案,那麼直接在“開始→執行”對話方塊中鍵入“sigverif /defscan”命令執行即可。

  例項4:禁用Windows的檔案保護功能
  在Windows 2000/XP的\Windows\System32目錄下有一個名為dllcache的資料夾,其中儲存了重要檔案的備份,例如Windows XP的dllcache資料夾中有2169個重要檔案,佔用364.5MB之多。如果Windows 2000/XP發現某個受保護的系統檔案被替換或損壞,那麼會從dllcache資料夾中自動恢復。

  如果你由於某些原因而需要騰出一部分可用空間,那麼可以在“開始→執行”對話方塊中鍵入“sfc /purgecache”命令清空Dllcache資料夾,注意“/”前有一個英文半形的空格字元,這樣將清除儲存在dllcache中的檔案快取。不過這樣一來,Windows檔案保護就只能從Windows安裝光碟恢復系統檔案了,因此你將經常會看到提示插入Windows安裝光碟的提示,因此不建議朋友們使用該技巧,如果你希望禁用Windows檔案保護的話,可以在“開始→執行”對話方塊中鍵入“gpedit.msc”開啟“本地計算機策略→計算機配置→管理模板→系統”視窗,找到“Windows檔案保護”組,在右側窗格中雙擊“設定Windows檔案保護掃描”項,設定為“已禁用”即可,在這裡還可以限制檔案保護快取的大小和指定檔案保護快取的位置。

轉載於:https://blog.51cto.com/whatday/1382311