如何保护我的程序集不被他人使用?

3

如何保护我的程序集?因为一旦我部署了安装程序,程序集也会被部署,用户有可能从“程序文件”中获取程序集,并在任何其他项目中添加引用或创建新的基于它的项目!希望能得到任何解决方案或帮助,谢谢。

6个回答

4

您可以将程序集内的所有成员设置为 internal,并且只允许其他人使用 InternalsVisibleToAttribute。但是如果有人足够坚持,就没有办法阻止他们使用它。


2
您可以对汇编代码进行混淆,这将使使用它的任务更加困难,但是您无法完全防止用户选择该汇编并使用。您可以做的是不要将汇编部署在用户计算机上,而是通过Web服务提供功能。

2
你无法完全防止这种情况的发生。但是,你可以通过一定方式对汇编进行混淆,使得暴露的类和方法没有任何合理的名称。
其中一个这样的混淆器是开源的,名为Obfuscar。该项目的持续版本可以在此链接下找到

1

没有简单的方法。您只能让它变得更加困难。如果您的算法非常独特和珍贵[1],以至于您需要使它们无法被第三方使用(或窥视),那么您唯一的选择是将逻辑放在远程位置(服务器后面),并让您的程序调用它。

[1] 根据我的经验,这种情况从未发生过。


0
你可以使用ILmerge将程序集合并到可执行文件中,然后使用混淆来保护整个包(.NET可执行文件可以被视为可以链接的程序集)。

0

虽然它显然不是安全的 - 你仍然需要在某个地方存储解密密钥 - 但它完全可以在磁盘上加密你的DLL,然后在内存中加载并解密。

如果你使用自定义处理程序来挂钩AppDomain.CurrentDomain.AssemblyResolve,甚至可以透明地执行此操作 - 当你的程序集尝试加载特定的DLL时,它会失败,你的处理程序会触发,并从加密的DLL中加载程序集。

我还没有发现这种方法存在任何问题。

此外,如果你只担心别人在他们自己的项目中使用你的完成的DLL,你可以在你的代码中添加一些堆栈检查,并解析正在运行的程序集并对其进行哈希检查。然而,这两种对策都很容易从你的DLL中删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接