是否有一个 C# 类来验证文件是否经过目录签名和信任

问题描述 投票:0回答:2

我需要验证本地硬盘上的所有静态文件是否与其数字签名相匹配(如果它们已签名)。我有 C# 代码来对 Authenticode 签名文件执行此操作,但没有 C# 代码来检查文件是否是 Catalog 签名的,例如 C:\windows\system32 记事本.exe。我见过许多使用 PowerShell 运行空间 Get-AuthenticodeSignature 的示例,但此方法创建了对要安装的 PowerShell 5.x 的依赖,并且我的一些系统仍处于旧版本。我找到的所有答案要么在检查 Authenticode 签名之前不检查目录,要么利用 PowerShell 运行空间。另一个变化是 c:\windows xplorer.exe,它既经过目录签名又经过 Authenticode 签名,但目录签名是用于验证它是否被篡改的正确签名。

c# powershell certificate x509certificate sign
2个回答
0
投票

您可以从 Windows SDK 运行

SignTool verify /v /pa CatalogFileName.cat
。可执行文件必须使用一些 *.dll 进行解聚才能运行。还有其他工具(如 SysInternals)也可以完成这项工作。

如果您想采用更原生的方式,您可能会发现以下 C# 代码很有用:


0
投票

要使用 cat 文件进行验证,您可以使用 sysinternals 中的 sigcheck:

sigcheck.exe -f X1Search.cat

https://learn.microsoft.com/en-us/windows-hardware/drivers/install/verifying-the-signature-of-a-test-signed-catalog-file

© www.soinside.com 2019 - 2024. All rights reserved.