本文转自 http://www.blogbus.com/softone-logs/105678346.html
作者:Eckel Chung blog地址:http://softone.blogbus.com/ 转载请保留
—————————————————————————
(1)前言
和网上大量的讨论如何制作数字签名和验证数字签名的文章本同,本文使用微软自带的API进行PE文件数字签名有效性的验证,使用语言C#。
我们可以在windows系统下直接右键查看某个PE文件数字签名的有效性,如下图:
这让我们想到,微软必然自带了对PE文件数字签名的验证办法,经过查找资料,确定其来自下图所示的dll文件里的WinVerifyTrust函数。
1 2 |
[DllImport("wintrust.dll", PreserveSig = true, SetLastError = false)] private static extern uint WinVerifyTrust(IntPtr hWnd, IntPtr pgActionID, IntPtr pWinTrustData); |
关于这个函数的使用,可以查看MSDN上的说明 。
(2) 构建将要用到的数据结构
根据微软官方材料,我们在使用这个函数前还得先准备几个数据结构: