我有一个数字签名的dll,当我的应用程序启动时,我想检查这个dll是"原来",特别是没有用假的替换。 如何检查Authenticode签名?
我从未做过这样的事情,我需要一些帮助才能开始。
更新
我希望阻止有人用自己的dll替换dll,并为这个dll提供自己的api方法,因此myApp.exe总是显示正确的许可。
我问作者,他告诉我:
"您可以采取一些措施来防止您提到的破解类型。例如,在代码中的某个位置,您可以通过检查Authenticode签名是否仍然有效来验证TurboActivate(TurboActivate是代码签名的)。或者,如果您想要一个更简单的解决方案,您可以进行简单的MD5或CRC检查。这样可以防止"掉落"用恶意版本替换TurboActivate。"
答案 0 :(得分:1)
如果dll是您程序的常规参考,则系统会自动为您执行检查,如果程序被篡改,您的程序将无法启动。你不需要做任何额外的事情,它是正常启动的一部分,并找到所有引用的程序集例程。
如果此程序集在程序中的某个位置“背后”加载,您可以查看它并检查它的标记:
var assembly = AppDomain.CurrentDomain.GetAssemblies().First(a => a.FullName.Contains("TurboActive"));
var token = assembly.GetName().GetPublicKeyToken();
// check if token is *their* valid token