證書系統64驅動簽名工具64Signer


首先聲明,我是一個菜鳥。一下文章中涌現技術誤導情況蓋不負責

    

【作者:張佩】【工具下載:http://www.yiiyee.cn/Blog/64signer/

    

  • 背景分析

    

微軟對於自Vista開始的64位OS有新的數字簽名策略,即全部內核驅動都必須是經過可信機構簽發過數字證書的,否則系統拒絕加載。此策略的目的是增強系統安全防護,使得一干慣於偷偷摸摸、不知所自何來的內核模塊沒法在系統中容身。但它卻也給端庄的內核開發人員帶去了一個麻煩:開發進程中會不斷生成新的驅動鏡像文件,開發者不可能將每個內部版本都拿去申請數字簽名,那樣不僅太麻煩,而且會大大延長開發周期。

    

微軟當然也斟酌到了這一點,它供給了一個可以制止簽名檢驗的開機啟動項。要運用此啟動項,用戶必須在啟動電腦的時候,實時在鍵盤上按下F8鍵,在出來的啟動菜單中選擇倒數第二個啟動項:Disable Driver Signature Enforcement.

    

這看上去很省心,但你如果再懂得得深刻一點,就會發明它其實很麻煩。

    

首先開機啟動項只能手動選擇,系統再次重啟的時候,它會忘記上一次所選擇的啟動項,用戶如果不再次實時按下F8按鈕的話,就會錯過機會,只能謀求下一次重啟時的機會。如果開發者需要不斷地進行重啟測試的話,就必須有一個專人站在邊上,作用就是實時地按下F8並在涌現的啟動菜單中選擇倒數第二項。這是很無聊並痛苦的事情,所以大多數開發者不肯采取這類方法。

    

其次就是在Win8系統上,用戶在系統開機時已沒有通過F8調出啟動菜單的機會。這一點雖然可以避免,但進程卻也復雜,這里不展開分析。

    

看到一扇關閉的窗戶,不必急着懊喪,因為或許旁邊正有一扇為你敞開的大門。微軟還供給了一項稱為Test Sign的技術,卻正可以較好處理內核開發者的這項困擾。只不過它的實現方法比較復雜,雖然微軟供給了詳細的文檔,但不到萬不得已,開發者一般不會去詳細研究其內容。從步調上來講,這個技術分兩個部分:

    

首先,啟動Test Signing啟動項屬性。實現的一個簡單方法是在控制台中運行如下命令:

    

    Bcdedit /set testsiging true

    

    

此命令的意思是為以后系統啟動項打開名為“TestSigning”的屬性。如果再運行上面的命令,就能看到這個屬性被列出:

    

    Bcdedit /enum {current}

    證書和系統

    

    

這個屬性會在下次系統重啟時生效。系統會始終記住這個屬性,重啟系統后也仍然有效。

    

第二是用一個測試證書對你的內核鏡像文件(一般即.sys文件)進行簽名。用戶對此可能有點迷惑,稍微分析一下。原來如果認證機構為內核驅動簽名的時候,會發表一個受信證書,這個證書最終會安裝到用戶系統中,而對鏡像文件所進行的簽名操縱,就是把證書信息寫到文件中。系統通過驗證這個證書來確認其受信與否。獲得這個證書首先需要銀子,其次也需要時光。但如果我自己可以給自己發表一個臨時證書,又怎樣呢?那當然又省心又快捷了。微軟供給了這樣的策略:在Test Signing模式下,測試證書能和其它商業證書一樣任務無誤。

    

那么這第二個步調其實又能細分為兩個小步調:1. 創立測試證書;2.用測試證書為驅動簽名。微軟供給了相關工具,包含在最新的SDK或DDK中。簡單來講,用戶應該應用makecert.exe創立證書,再用signtool.exe進行鏡像文件簽名。微軟所供給的工具不止這兩個,但這兩個確實是最主要的。遺憾的是這些工具都只能運行在控制台中,用戶界面不算友好,參數也很晦澀。這大概是為什么大多數內核開發者都不太應用這些工具的原因?

    每日一道理
站在歷史的海岸漫溯那一道道歷史溝渠:楚大夫沉吟澤畔,九死不悔;魏武帝揚鞭東指,壯心不已;陶淵明悠然南山,飲酒采菊……他們選擇了永恆,縱然諂媚誣蔑視聽,也不隨其流揚其波,這是執著的選擇;縱然馬革裹屍,魂歸狼煙,也要仰天長笑,這是豪壯的選擇;縱然一身清苦,終日難飽,也願怡然自樂,躬耕隴畝,這是高雅的選擇。在一番選擇中,帝王將相成其蓋世偉業,賢士遷客成其千古文章。

    

工具應用方法,請參考微軟相關文檔。

    

  • 應用64Signer

    

好了,當初一個嶄新的新星涌現了。64Signer能幫助你一步到位。它不僅界面清晰明了,並且功能完整智能。開發者只要簡單地進行一次拖拽,點最多兩個按鈕,就可以實現系統設置和文件簽名等一系列的任務。深淵隱藏在堅固的橋面下,用戶只要開車通過就行,而無需流連驚駭。

    

證書和系統

    

工具的操縱方法其實已簡單明了地列在界面上(紅色字體部分),但我還是願意詳細解釋一下應用進程:

    

  1. 運行工具后它可以准確表現以后系統的Test Signing設置。如果此屬性已被打開,則“Enable Test Signing Option”是主動鈎住的;否則用戶需點擊一下(第一個點擊)。
  2. 然后用戶應將驅動文件拖拽到用戶界面中來,或者手動輸入路徑,或者點擊Open按鈕從而通過文件對話框來選擇,都可以(一次拖拽)。
  3. 最后點擊Sign按鈕(二次點擊)。如果簽名成功,用戶能看到上面的成功提示(如果有看到失敗的情況,請發郵件告訴我):

    

證書和系統

    

在關閉工具的時候,工具如果檢測到你改變了Test Signing啟動屬性,會有上面的系統重啟提示:

    

證書和系統

    

就這么簡單,我總結為:一拖兩點。

    

這個工具的知心的地方還沒有完整展現出來,如果你看到曾經操縱過的歷史文件已被整理妥善,以動態列表的情勢表現,而你只要點擊一下就能展開並選擇,貴用戶的心情會不會更高興?如下圖所示:

    

證書和系統

文章結束給大家分享下程序員的一些笑話語錄: 警告
有一個小伙子在一個辦公大樓的門口抽着煙,一個婦女路過他身邊,並對他 說, “你知道不知道這個東西會危害你的健康?我是說, 你有沒有注意到香煙 盒上的那個警告(Warning)?”
小伙子說,“沒事兒,我是一個程序員”。
那婦女說,“這又怎樣?”
程序員說,“我們從來不關心 Warning,只關心 Error”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM