如何保护我的程序集?因为一旦我部署了安装程序,程序集也会被部署,用户有可能从“程序文件”中获取程序集,并在任何其他项目中添加引用或创建新的基于它的项目!希望能得到任何解决方案或帮助,谢谢。
如何保护我的程序集?因为一旦我部署了安装程序,程序集也会被部署,用户有可能从“程序文件”中获取程序集,并在任何其他项目中添加引用或创建新的基于它的项目!希望能得到任何解决方案或帮助,谢谢。
您可以将程序集内的所有成员设置为 internal,并且只允许其他人使用 InternalsVisibleToAttribute。但是如果有人足够坚持,就没有办法阻止他们使用它。
没有简单的方法。您只能让它变得更加困难。如果您的算法非常独特和珍贵[1],以至于您需要使它们无法被第三方使用(或窥视),那么您唯一的选择是将逻辑放在远程位置(服务器后面),并让您的程序调用它。
[1] 根据我的经验,这种情况从未发生过。
虽然它显然不是安全的 - 你仍然需要在某个地方存储解密密钥 - 但它完全可以在磁盘上加密你的DLL,然后在内存中加载并解密。
如果你使用自定义处理程序来挂钩AppDomain.CurrentDomain.AssemblyResolve,甚至可以透明地执行此操作 - 当你的程序集尝试加载特定的DLL时,它会失败,你的处理程序会触发,并从加密的DLL中加载程序集。
我还没有发现这种方法存在任何问题。
此外,如果你只担心别人在他们自己的项目中使用你的完成的DLL,你可以在你的代码中添加一些堆栈检查,并解析正在运行的程序集并对其进行哈希检查。然而,这两种对策都很容易从你的DLL中删除。