(一)如何签名
SignTool.exe (Sign Tool) - .NET Framework | Microsoft Learn
Using SignTool to Sign a File - Win32 apps | Microsoft Learn
签名命令行:
signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com yyy.dll
xxx.pfx是购买的证书文件(包含了公钥和私钥,需要保管好,不要泄露了)。
yyy.dll 就是自己需要签名的dll文件。
(二)如何批量签名
批量签名内核驱动程序和普通代码程序汇总-沃通CA官方论坛 - 专业数字证书论坛
微软代码签名证书使用指南(SignTool),数字签名各种微软Windows平台代码-沃通微软代码签名!
通过上面的例子看到signtool是支持批量签名的。
签名命令行:
signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com .\path\*
或者
signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com .\path\*.dll
或者
signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com .\path\*.dll .\path\*.exe
或者
signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com 1.dll 2.dll 3.exe 4.exe 5.sys
(三)如何本地测试学习签名
在本地找一个 .pfx 文件,如果你购买了证书当然更好,或者有一些免费的证书也可以
找到sdk目录下的signtool.exe文件,调用上面的签名命令行即可。
下面是在我本地找到的cmake目录下的一个临时验证的pfx文件,我的签名结果如下:
验证签名也类似的。
我把我的测试学习的文件放到了这里:
使用signtool进行签名和验证签名的小测试资源-CSDN文库
(四)如何验证签名
1、手动如何确认签名是否有效。直接看文件的数字签名信息是否正常即可。
异常:
正常:
2、通过signtool工具来验证
windows平台下对dll进行数字签名
Using SignTool to Verify a File Signature - Win32 apps | Microsoft Learn
命令行:
signtool.exe verify /pa /v xxx.dll
3、通过代码来验证
Example C Program: Verifying the Signature of a PE File - Win32 apps | Microsoft Learn
测试过是可行的,并且signtool也是使用这个WinVerifyTrust API来实现签名验证的。