答案1
作为本文(由 JosefZ 链接) 表示,只有当签名在文件本身中时,才会显示“数字签名”选项卡。签名也可能存储在目录文件中,该文件可在 中找到\Windows\System32\catroot
。
Sysinternals工具可以告诉您某个文件是否具有嵌入签名。如果您在文件名前sigcheck
给出该选项,则输出将包含一行以及更多证书信息。目录中签名的文件将在该行上命名文件,而具有嵌入签名的文件将在该行上拥有自己的文件名。例如,这是(非常长)输出的第一部分:-i
Catalog
.cat
sigcheck -i \windows\regedit.exe
C:\Windows\regedit.exe:
Verified: Signed
Link date: 9:12 PM 10/28/2014
Signing date: 2:59 AM 11/7/2014
Catalog: C:\Windows\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\Package_868_for_KB3000850~31bf3856ad364e35~amd64~~6.3.1.8.cat
因此,regedit.exe
该目录中存储有一个有效的签名。
答案2
对于由于签名位于目录文件中而未显示“数字签名”选项卡的文件,您还可以signtool.exe
使用Windows SDK通过传递适当的命令行选项来检查签名。
如果你已经安装了 SDK,signtool
则会位于例如
c:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\signtool.exe
(根据需要替换您的 SDK 版本和机器架构。)
signtool
使用执行普通 Authenticode 签名验证的选项运行/pa
,以及/a
验证目录中可能具有签名的文件的选项。例如:
> signtool verify /pa /a c:\windows\regedit.exe
0 sha256 RFC3161
Successfully verified: c:\windows\regedit.exe