白話數字簽名(番外篇) 簽名EXE檔案(下)

2022-04-01 19:18:40 字數 2777 閱讀 2704

摘要

如果我們在iexplore.exe上面右擊,再點選「屬性」,可以看到並沒有顯示數字簽名頁,但是在process explorer中卻可以成功驗證簽名,這是怎麼回事呢?

簽名exe檔案的兩種方法

上篇寫到如果我們在iexplore.exe上面右擊,再點選「屬性」,可以看到並沒有顯示數字簽名頁,但是在process explorer中卻可以成功驗證簽名,這是怎麼回事呢?這是因為有兩種簽名exe檔案的方法:1. 將簽名資料嵌入到exe檔案內部,就是上篇裡介紹的那種方法。2. 將簽名資料存放到乙個 .cat 檔案中,windows絕大多數程式和驅動都是使用的這種方法,所以在檔案屬性裡看不到簽名資訊,卻可以使用process explorer成功驗證簽名。下面就來介紹一下這種簽名方法。

使用安全編錄(.cat)檔案簽名exe檔案

step1:首先,為了方便,先在c盤下建立乙個目錄「c:\signdemo」。然後將乙個未簽名的exe檔案「mathlover121.exe」複製到這個目錄下。

step2:建立乙個文字檔案,命名為「123soft.cdf」,內容如圖所示。

注 makecat.exe是隨3.0的sdk發布的,所以為了方便我把它上傳到了這裡。

step4:開啟命令列,使用「makecat -v 123soft.cdf」命令生成「123soft.cat」檔案。

step5:開啟命令列,執行「signtool signwizard」命令,開啟簽名嚮導,使用和上篇同樣的方法簽名「123soft.cat」檔案。

step6:測試123soft.cat檔案裡面是否已包含了mathlover121.exe的數字簽名。方法是使用「signtool verify -v -pa -c 123soft.cat mathlover121.exe」命令。

step7:使用自動模式(即不顯式給出cat檔案)驗證簽名,之所以會失敗是因為我們還沒有將123soft.cat匯入作業系統的安全編錄資料庫。

step8:將123soft.cat新增到作業系統的安全編錄資料庫。在命令列執行「signtool catdb -v 123soft.cat」命令即可。

step9:重做step7的測試,發現可以成功驗證簽名了。

step10:在process explorer裡面驗證mathlover121.exe的簽名,發現可以驗證成功。

注意在上面step2中,123soft.cdf中的檔案列表一定要寫成「mathlover=mathlover121.exe」,如果寫成「mathlover=mathlover121.exe」也可以成功生成123soft.cat檔案,但是驗證簽名會失敗,提示的錯誤資訊為「找不到指定檔案」。我猜想這是因為簽名驗證程式是通過mathlover121.exe的雜湊值來查詢簽名資料的,而只有通過標記才能在生成cat檔案的時候使用mathlover121.exe的雜湊值替換掉「mathlover」這個名稱。關於摘要演算法可以參考我的白話數字簽名(2)。

簽名***

嵌入式的簽名方式只能簽名有限的幾種檔案格式,但是使用cat檔案的方式卻可以簽名任意格式的檔案。下面就來演示一下簽名***檔案的過程。

step1:把乙個***檔案複製到「c:\signdemo」。

step2:在123soft.cdf檔案裡新增這個檔名。

step3:按照前面的方法重新生成、簽名cat檔案。

step4:驗證簽名。

參考文獻

kernel-mode code signing walkthrough

microsoft authenticode 參考指南

數字簽名簽名概述

數字簽名的技術流程描述 1 傳送者使用摘要演算法對傳送資訊產生資訊摘要 2 傳送者使用自己的私鑰對資訊摘要進行簽名 3 傳送者將資訊本身和已簽名的摘要一起傳送出去 4 接收者使用相同的摘要演算法對資訊本身計算資訊摘要 5 接收者使用傳送者的公鑰對簽名的摘要就行驗籤,獲得資訊傳送者的資訊摘要 6 接收...

電子簽名和數字簽名

在 中華人民共和國電子簽名法 中,電子簽名的定義是 資料電文中以電子形式所含 所附用於識別簽名人身份並表明簽名人認可其中內容的資料。通過技術手段實現傳統的紙面簽字或者蓋章的功能,以確認交易當事人的真實身份,保證交易的安全性 真實性和不可抵賴性 電子簽名相當於數位化的手寫簽名,可用於確認文件中的內容或...

給exe程式 製作數字簽名

簡單地說,需要兩步 1.購買或自己創立乙個的數字簽名證書檔案。有工具軟體可以製作數字簽名證書,比如openssl,但自簽的,在別人的機器上,回出現簽名無法校驗的問題。除非人家信任,否則人家不會安裝你的證書。2.用工具軟體對exe或其他任何檔案,進行數字簽名。可以是免費的ui工具,比如 ksign 也...