如果我在命令中使用sigverif,那么为什提示。
sigverif输出
File Modified Version Status Catalog Signed By
------------------ ------------ ----------- ------------ ----------- -------------------
[c:\windows\system32]
batt.dll 7/14/2009 2:6.1 Signed nt5.cat Microsoft Windows
PowerShell输出:
PS> get-authenticodesignature C:\Windows\System32\batt.dll
Directory: C:\Windows\System32
SignerCertificate Status Path
----------------- ------ ----
NotSigned batt.dll
答案 0 :(得分:2)
Microsoft已制定一项计划,以确保设备驱动程序可靠且不太可能导致计算机出现问题。当Microsoft开发人员和第三方供应商创建新驱动程序时,可以将其提交给Microsoft内部的特殊部门进行“设备签名”。签名存储在驱动程序包中的cat文件中,sigverify.exe
检查。有关更多说明,请参阅Driver Signing Requirements for Windows。
get-authenticodesignature
用于检测其他可执行签名,即.EXE,.DLL或.PS1。就PowerShell而言,您可以使用Set-AuthenticodeSignature
对代码进行签名。对于.DLL和.EXE(无论它们是本机的还是托管的),您可以使用SDK或DDK中的signtool.exe。结果可以显示在文件的属性中:
它存在另一种签名,仅保留给托管代码。它被称为强名。它用于为程序集赋予身份。使用强名称对程序集进行签名可以验证它的唯一性,并允许将其存储在全局程序集缓存中,使用sn.exe完成。它可以与前一个结合起来。
答案 1 :(得分:1)
sigverif用于查找未签名的驱动程序并验证设备驱动程序(在C:\ WINDOWS \ SYSTEM32 \ DRIVERS下)。当你打开Dll的属性页面时,你看到了“数字签名”标签吗?
答案 2 :(得分:1)
普通文件可以通过以下两种方式之一进行签名:嵌入式签名或目录签名。有关这两种方法的详细信息,请参见this document的第12页。
Get-AuthenticodeSignature适用于具有嵌入式签名的文件;但它将目录签名文件报告为未签名。对PowerShell团队来说这已经reported as a bug了,但显然还没有得到足够的赞成来引起他们的注意。
作为一种解决方法,您可以使用正确处理目录签名文件的Sysinternals Sigcheck。在this github code中有一个名为Use-Sigcheck的Powershell函数,它可能会派上用场。