白话数字签名(番外篇)----签名EXE文件(下)
轉自:http://www.cnblogs.com/1-2-3/archive/2007/12/03/colloquialism-digital-certificate-part5.html
摘要
如果我們在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”,內容如圖所示。?
Step3:?下載這個MakeCat.rar,解壓縮,得到MakeCat.exe,將它復制到“C:\SignDemo”。
注 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中的文件列表一定要寫成“<hash>MathLover=MathLover121.exe”,如果寫成“MathLover=MathLover121.exe”也可以成功生成123soft.cat文件,但是驗證簽名會失敗,提示的錯誤信息為“找不到指定文件”。我猜想這是因為簽名驗證程序是通過MathLover121.exe的散列值來查找簽名數據的,而只有通過<hash>標記才能在生成CAT文件的時候使用MathLover121.exe的散列值替換掉“MathLover”這個名稱。關于摘要算法可以參考我的白話數字簽名(2)。??簽名MP3
嵌入式的簽名方式只能簽名有限的幾種文件格式,但是使用CAT文件的方式卻可以簽名任意格式的文件。下面就來演示一下簽名MP3文件的過程。??Step1:?把一個MP3文件復制到“C:\SignDemo”。??Step2:?在123soft.cdf文件里添加這個文件名。??Step3:?按照前面的方法重新生成、簽名CAT文件。?Step4:?驗證簽名。??
參考文獻
Kernel-Mode Code Signing Walkthrough
Microsoft Authenticode 參考指南 本文轉自 netcorner 博客園博客,原文鏈接:http://www.cnblogs.com/netcorner/archive/2008/03/01/2912172.html??,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的白话数字签名(番外篇)----签名EXE文件(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [20171109]缓存命中率神话.tx
- 下一篇: ASP.NET处理架构