為sys cat檔案生成測試簽名

2021-08-18 04:24:24 字數 2243 閱讀 8889

這幾天想測試一下使用dpinst安裝驅動,由於驅動程式沒有簽名因此安裝失敗,藉此研究一下如何為sys/cat檔案生成測試簽名。本文參考了看雪論壇上的一篇文章:win x64平台驅動測試數字簽名,並對其中一些錯誤(可能是作者前後兩次實驗導致的偏差)做了修改。

驅動在開發/測試階段時是沒有數字簽名的,所以一般都會開機後進入f8,選擇禁止數字簽名強制,但是這個辦法的麻煩之處就是每次開機都要這樣操作,要是虛擬機器的話,一不小心錯過了會很麻煩。msdn上對這個有個解決方案就是使用測試簽名。假設編譯好的驅動的位置是: e:\winddk\my_test\objchk_win7_amd64\amd64

1. 製作乙個測試使用的數字證書: 

使用管理員許可權開啟命令列(可以用ddk提供的checked/free build environment)進入驅動的路徑,然後輸入以下命令:

makecert -r -pe -ss privatecertstore -n cn=contoso.com(test) my_test.cer

(注:privatecertstore和contoso.com(test)可以隨意命名),這個時候在目錄下會生成乙個my_test.cer的測試證書;如果不使用管理員許可權可能會失敗;如果使用cmd可能會失敗;

2. 修改inf檔案並生成目錄檔案:

修改inf檔案[version]節,在這個節點的最後增加乙個

catalogfile.ntamd64 = my_test_amd64.cat

需要注意的是這個catalogfile只有catalogfile.ntamd64 catalogfile.nt catalogfile三個情況;然後將inf檔案也放到驅動sys檔案的路徑下

在checked/free build environment輸入下面的命令:

inf2cat.exe /driver:e:\winddk\my_test\objchk_win7_amd64\amd64\ /os:7_x64

如果想對其他系統平台生成cat檔案,可以參考這篇文章:inf2cat應用的引數使用詳細介紹(inf2cat生成cat檔案)

3. 對cat檔案簽名:

使用以管理員許可權開啟wdk帶的命令列,定位到驅動程式路徑下,輸入下面的命令:

signtool sign /a /v /s privatecertstore /n contoso.com(test) /t my_test_amd64.cat

這裡需要聯網,不聯網會有乙個警告,因為它需要去生成時間戳;另外,執行signtool時的/s和/n引數後面跟的字串要分別對應執行makecert時的-ss -n引數的內容(原作者這塊內容可能筆誤寫錯了,導致簽名失敗)

4. 註冊測試數字證書:

定位到驅動檔案路徑下,輸入以下命令:

certmgr.exe /add my_test.cer /s /r localmachine root

5. 對驅動檔案簽名:

定位到驅動檔案路徑下,輸入以下命令:

signtool sign /a /v /s privatecertstore /n contoso.com(test) /t ***x.sys

這裡同樣需要聯網,不聯網會有乙個警告,因為它需要去生成時間戳;

6. 安裝測試簽名:

在目標機上,將***.sys ***.inf my_test.cer my_test_amd64.cat,以及certmgr.exe放在乙個路徑下,然後以管理員許可權開啟cmd命令列定位到這個目錄,

輸入以下命令來註冊證書以及開啟測試模式:

(這兩步很重要,筆者嘗試過在沒有註冊證書的目標機上用dpinst來安裝簽過名的sys和cat,結果就是沒有成功安裝驅動包)

certmgr.exe /add my_test.cer /s /r localmachine root

certmgr.exe /add my_test.cer /s /r localmachine trustedpublisher

cd c:\windows\system32\

bcdedit.exe /set testsigning on

測試模式開啟一次後,即使重啟電腦也不用再次設定,除非顯式的關閉它;窗體右下角會提示目前是在測試模式,關閉的命令是bcdedit.exe /set testsigning off

需要注意的事項:

1. 如果目標機上沒有certmgr.exe,那麼可以從主機上直接拷貝乙個64位的certmgr.exe過去的;

2. 如果重新生成了sys檔案而沒有修改inf檔案的話,那麼只需要在生成sys檔案後再次執行對驅動檔案的重新簽名即可;測試證書和目錄檔案都不需要重新生成;

驅動檔案生成測試簽名

驅動在開發 測試階段時是沒有數字簽名的,所以一般都會開機後進入f8,選擇禁止數字簽名強制,但是這個辦法的麻煩之處就是每次開機都要這樣操作,要是虛擬機器的話,一不小心錯過了會很麻煩。msdn上對這個有個解決方案就是使用測試簽名。對驅動檔案簽名 定位到驅動檔案路徑下,輸入以下命令 signtool si...

jarsigner為apk檔案簽名

jarsigner verbose keystore feelyou.keystore storepass feelyou.info signedjar signed.apk digestalg sha1 sigalg md5withrsa unsigned.apk feelyou 解釋 1 key...

使用jks檔案為apk簽名

參與的專案近期要求安全檢測,apk不達標並且無法修復的話會要求使用官方加固包。加固之後的包簽名會失效,所有需要重新進行簽名。今天藉此機會記錄一下整個操作流程。原來apk是使用jks格式的簽名檔案來操作的,還有一種是keystore檔案格式。我們先來看jks檔案格式怎麼操作 一 jks格式操作步驟 1...