winload.exe数字签名问题详解
? ? 在上篇文章中關于winload.exe數字簽名無法驗證導致無法正常開機問題,現在再做個深入的分析。
? ? 部分遇到相似問題的朋友在使用將原系統(tǒng)C:\Windows\System32\Boot目錄下的winload.exe文件拷貝到C:\Windows\System32目錄下替換錯誤的winload.exe的方法之后重啟電腦發(fā)現問題依舊,自然就認為這是個坑人的辦法。其實事實并非如此,下面就來詳細分析下這個問題。
? ? 在搞清楚這個問題之前先要了解一下win7的啟動過程:電腦加電后,首先它會啟動主板上的BIOS,BIOS默認對電腦的硬件進行自檢,完成自檢之后BIOS會搜索硬盤上的MBR,如果MBR正常,那么MBR就會讀取硬盤上的DPT,也叫分區(qū)表,DPT里記錄了硬盤的分區(qū)表信息,MBR會在這些分區(qū)里搜索活動分區(qū),并且讀取活動分區(qū)里的主引導記錄PBR,如果一切正常就把控制權給PBR。在取得控制權后PBR會尋找活動分區(qū)根目錄下的bootmgr文件,這個文件是win7的啟動管理器,bootmgr接管后會讀取活動分區(qū)根目錄下Boot文件夾下的BCD文件,這個文件存儲了win7的啟動配置數據,Boot文件夾還包含相應語言的文件夾,對應語言文件夾下存在BOOTMGR.EXE.MUI文件。bootmgr讀取BCD并調用BOOTMGR.EXE.MUI最終為我們呈現啟動菜單界面。當然因為很多人默認直接進入Windows所以就看不到啟動菜單。完成這一步驟后,bootmgr會按照在BCD文件中設置的系統(tǒng)所在分區(qū)加載該分區(qū)Windows\System32\winload.exe程序,就是說winload.exe的運行環(huán)境是bootmgr。winload.exe取得控制權后加載內核,硬件和其他服務,然后進入桌面至此完成啟動。
? ?上面的文字敘述可能比較繁瑣,整個啟動過程簡單來說就是:BIOS--MBR--DPT--PBR--bootmgr--BCD--啟動菜單---winload.exe(如果選擇的是win7)--內核加載等 --啟動整個windows7系統(tǒng)。
? ? 啟動過程搞清楚了就能清楚地定位問題,既然winload.exe無法驗證簽名,它又運行在bootmgr下而且BCD文件是配置文件,那我們就得到解決問題的第一個方法,禁止驗證winload.exe的簽名就可以了,那又怎么禁止呢?前面說到的BCD配置文件是控制權從bootmgr到winload.exe的關鍵文件,顯然我們要去找它。先進入WinPE里面(如果不知道什么是PE和怎么進PE就百度吧),然后到原來系統(tǒng)盤根目錄下的Boot文件夾里就可以看到BCD文件了,操作之前先備份一下BCD文件,在PE里找到BOOTICE程序,這是BCD編輯工具,打開它你會看到這樣的界面:?
? ? ? ? ? ? ? ? ? ? ? ? ??
選擇BCD編輯后選擇其他BCD文件,然后到系統(tǒng)盤Boot目錄下找到BCD文件,最好用智能編輯模式打開BCD文件,然后可以看到這樣的界面:
? ? ? ? ? ? ? ? ? ? ? ? ? ?
這里可以看到在左下方有禁用數字簽名驗證的選項,這里為了演示我已經禁用了數字簽名驗證。到這里就算是數字簽名無效的winload.exe也可以啟動系統(tǒng)了。到這里也可以看出很多使用ghost系統(tǒng)的用戶因為關閉了更新而BCD中又沒有禁用驅動簽名驗證從而導致winload.exe數字簽名失效而無法驗證,使系統(tǒng)無法啟動。
? ? 上面的方法是禁用數字簽名,當然也可以選擇使用有效簽名的winload.exe文件替換簽名無效的winload.exe文件。
相信到這里關于文首疑問的答案應該很清楚了。顯然很多用戶C:\Windows\System32\Boot目錄下的winload.exe文件的簽名也是無效的,或者說你的winload.exe文件的數字簽名本身是無效的,你又是用的ghost系統(tǒng),開始時系統(tǒng)BCD是禁止數字簽名驗證的,在修改過BCD之后或BCD損壞之后,系統(tǒng)開始驗證winload.exe的數字簽名,驗證失敗導致系統(tǒng)無法加載。可以看下我的winload.exe:
? ? ? ? ? ? ? ? ? ? ? ? ??
我現在使用的winload.exe的簽名無效但是我禁止數字簽名驗證一樣可以正常進入系統(tǒng)。當然我的C:\Windows\System32\Boot目錄下的winload.exe文件的數字簽名是有效的。所以替換之后可以成功進入系統(tǒng)。所以說不是替換文件的方法無用,而是很多人只是機械的按別人的方法操作而不看問題的根源。
? ? 到這里問題已經基本說清楚也解決了。最后說一下兩種方法的優(yōu)缺點吧,當然兩種方法都需要PE,所以說PE是個好東西。禁用數字簽名驗證只需要修改BCD即可,很方便。但是禁用數字簽名驗證會帶來一定的安全問題。替換文件就需要找到數字簽名有效的winload.exe文件,是的一定要有效才行,網上下載的很多都是無效的,所以導致很多人到坑里去了,這個麻煩一點但不需要犧牲安全。
? ? 雖然網上有很多解決這個問題的辦法,但很多都只說了個方法而沒有具體解決問題的思路。其實只要理清思路,問題的解決辦法自然會有啦,很多系統(tǒng)無法成功啟動的問題只要順著win7啟動過程去看就能找到解決的方法。
? ??
總結
以上是生活随笔為你收集整理的winload.exe数字签名问题详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解javascript函数参数
- 下一篇: 查看网关