我们需要验证二进制文件是否使用数字签名(Authenticode)正确签名.这可以通过signtool.exe轻松实现.但是,我们需要一种自动方式来验证签名者名称和时间戳.这在使用CryptQueryObject()API的本机C++中是可行的,如以下精彩示例所示:如何从Authenticode签名的可执行文件获取信息
然而,我们生活在一个托管的世界:)因此寻找相同问题的C#解决方案.直接的方法是pInvoke Crypt32.dll,一切都完成了.但是System.Security.Cryptography.X509CertificatesNamespace中有类似的托管API .X509Certificate2类似乎提供了一些信息但没有时间戳.现在我们来到原始问题,我们如何才能在C Sharp中获得数字签名的时间戳?
我们有一个带注册扩展的.NET 3.5应用程序.我们如何保护它免受DLL劫持攻击?
由于传统和设计问题,强大的命名/签名现在不是一种选择
如果您不知道DLL劫持是什么,请提供额外信息:
我正在尝试编写一个C#程序来验证exe的数字签名.exe是用authenticode证书签名的,我想检测篡改.
我已经能够创建一个SignedCms实例,如下所述:从.NET中的Authenticode签名文件中获取时间戳
我假设SignedCms.CheckSignature可以做到这一点,但是这个方法永远不会引发异常......即使不是当我修改exe的某些部分时......
我正在执行一个C#程序,即来自另一个C#程序的.exe.但.exe在其程序中有一些Console.WriteLine().我想把标准输出到我的C#程序中.
例如,
考虑一个C#可执行文件,即1.exe,还有另一个程序2.cs.
我从2.cs 1.exe打电话.现在控制台从1. exe显示一些输出.但是我希望我的程序中的输出2.cs. 用于向用户显示信息.
可能吗?请帮忙
谢谢Sai sindhu
.net ×4
c# ×3
authenticode ×2
certificate ×1
dll ×1
outputstream ×1
security ×1
signature ×1
signtool ×1