我正在创建一个包含多个DLL的应用程序,并且我认为我可以在运行时调用Assembly.GetPublicKey()并查看DLL是否由我签名。但是,我现在看到有一个SetPublicKey 大会上的方法。难道它不容易让任何人欺骗我的DLL吗? 或者我是以错误的方式检查DLL的签名?
更新:我有一个插件架构,我只是想通过编写自己的DLL来阻止某人劫持我的应用。
答案 0 :(得分:1)
您的整个应用程序是否在.NET中?编译时,任何引用另一个程序集的程序集都应该要求程序集正确签名,.NET应该能够处理它,并且它应该对您透明。你不应该自己检查装配。
答案 1 :(得分:0)
可能不是建议的路线,但我为我的DLL做的是创建一个类并传递一个私钥来激活它。
var secureClass = new MyDLL.SecureClass(“Password”)
然后在SecureClass中的任何方法上,在我输入任何代码之前调用以下内容:
如果IsActivated()= false则 Alert_Not_Active() 返回错误 结束如果
也许有更好的选择,但这对我来说非常适合。确保使用{Smart Assembly}之类的应用程序来保护您的代码免受反射,如果它是非常重要的编码