白话数字签名(番外篇)——签名EXE文件(下)
生活随笔
收集整理的這篇文章主要介紹了
白话数字签名(番外篇)——签名EXE文件(下)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
摘要
如果我們在IEXPLORE.EXE上面右擊,再點擊“屬性”,可以看到并沒有顯示數(shù)字簽名頁,但是在Process Explorer中卻可以成功驗證簽名,這是怎么回事呢?
簽名EXE文件的兩種方法
上篇寫到如果我們在IEXPLORE.EXE上面右擊,再點擊“屬性”,可以看到并沒有顯示數(shù)字簽名頁,但是在Process Explorer中卻可以成功驗證簽名,這是怎么回事呢?這是因為有兩種簽名EXE文件的方法:1. 將簽名數(shù)據(jù)嵌入到EXE文件內(nèi)部,就是上篇里介紹的那種方法。2. 將簽名數(shù)據(jù)存放到一個 .cat 文件中,Windows絕大多數(shù)程序和驅(qū)動都是使用的這種方法,所以在文件屬性里看不到簽名信息,卻可以使用Process Explorer成功驗證簽名。下面就來介紹一下這種簽名方法。
使用安全編錄(.cat)文件簽名EXE文件
簽名MP3
參考文獻
Kernel-Mode Code Signing Walkthrough
Microsoft Authenticode 參考指南
如果我們在IEXPLORE.EXE上面右擊,再點擊“屬性”,可以看到并沒有顯示數(shù)字簽名頁,但是在Process Explorer中卻可以成功驗證簽名,這是怎么回事呢?
簽名EXE文件的兩種方法
上篇寫到如果我們在IEXPLORE.EXE上面右擊,再點擊“屬性”,可以看到并沒有顯示數(shù)字簽名頁,但是在Process Explorer中卻可以成功驗證簽名,這是怎么回事呢?這是因為有兩種簽名EXE文件的方法:1. 將簽名數(shù)據(jù)嵌入到EXE文件內(nèi)部,就是上篇里介紹的那種方法。2. 將簽名數(shù)據(jù)存放到一個 .cat 文件中,Windows絕大多數(shù)程序和驅(qū)動都是使用的這種方法,所以在文件屬性里看不到簽名信息,卻可以使用Process Explorer成功驗證簽名。下面就來介紹一下這種簽名方法。
使用安全編錄(.cat)文件簽名EXE文件
| Step1: 首先,為了方便,先在C盤下創(chuàng)建一個目錄“C:\SignDemo”。然后將一個未簽名的EXE文件“MathLover121.exe”復(fù)制到這個目錄下。 | ||
| Step2: 創(chuàng)建一個文本文件,命名為“123soft.cdf”,內(nèi)容如圖所示。 | ||
| Step3: 下載這個MakeCat.rar,解壓縮,得到MakeCat.exe,將它復(fù)制到“C:\SignDemo”。 注 MakeCat.exe是隨3.0的SDK發(fā)布的,所以為了方便我把它上傳到了這里。 | ||
| Step4: 打開命令行,使用“makecat -v 123soft.cdf”命令生成“123soft.cat”文件。 | ||
| Step5: 打開命令行,執(zhí)行“signtool signwizard”命令,打開簽名向?qū)?#xff0c;使用和上篇同樣的方法簽名“123soft.cat”文件。 | ||
| Step6: 測試123soft.cat文件里面是否已包含了MathLover121.exe的數(shù)字簽名。方法是使用“signtool verify -v -pa -c 123soft.cat mathlover121.exe”命令。 | |
| Step7: 使用自動模式(即不顯式給出CAT文件)驗證簽名,之所以會失敗是因為我們還沒有將123soft.cat導(dǎo)入操作系統(tǒng)的安全編錄數(shù)據(jù)庫。 | |
| Step8: 將123soft.cat添加到操作系統(tǒng)的安全編錄數(shù)據(jù)庫。在命令行執(zhí)行“signtool catdb -v 123soft.cat”命令即可。 | |
| Step9: 重做Step7的測試,發(fā)現(xiàn)可以成功驗證簽名了。 | |
| Step10: 在Process Explorer里面驗證MathLover121.exe的簽名,發(fā)現(xiàn)可以驗證成功。 |
| 注意 在上面Step2中,123soft.cdf中的文件列表一定要寫成“<hash>MathLover=MathLover121.exe”,如果寫成“MathLover=MathLover121.exe”也可以成功生成123soft.cat文件,但是驗證簽名會失敗,提示的錯誤信息為“找不到指定文件”。我猜想這是因為簽名驗證程序是通過MathLover121.exe的散列值來查找簽名數(shù)據(jù)的,而只有通過<hash>標記才能在生成CAT文件的時候使用MathLover121.exe的散列值替換掉“MathLover”這個名稱。關(guān)于摘要算法可以參考我的白話數(shù)字簽名(2)。 | |
簽名MP3
| 嵌入式的簽名方式只能簽名有限的幾種文件格式,但是使用CAT文件的方式卻可以簽名任意格式的文件。下面就來演示一下簽名MP3文件的過程。 | |
| Step1: 把一個MP3文件復(fù)制到“C:\SignDemo”。 | |
| Step2: 在123soft.cdf文件里添加這個文件名。 | |
| Step3: 按照前面的方法重新生成、簽名CAT文件。 | |
| Step4: 驗證簽名。 | |
參考文獻
Kernel-Mode Code Signing Walkthrough
Microsoft Authenticode 參考指南
轉(zhuǎn)載于:https://www.cnblogs.com/1-2-3/archive/2007/12/03/colloquialism-digital-certificate-part5.html
總結(jié)
以上是生活随笔為你收集整理的白话数字签名(番外篇)——签名EXE文件(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让linux的防活墙也像windows一
- 下一篇: 在Exchange Server 200