如何保护我的装配体被其他人使用?

如何保护我的装配体被其他人使用?

问题描述:

我该如何保护我的程序集,因为一旦我部署了安装程序, 程序集也将被部署,并且用户将有机会从Program Files获得程序集,并且可能会添加对其他任何项目的引用或创建新的项目在上面 !任何解决方案或帮助,将不胜感激谢谢。如何保护我的装配体被其他人使用?

您可以使程序集内部的所有成员都在内部,并且只允许其他人在InternalsVisibleToAttribute中使用它。但是如果有人足够执着,就没有办法阻止他们使用它。

你可能会obfuscate你的程序集的代码将使得使用它的任务变得更加困难,但是你没有太多的工作可以100%阻止用户选择程序集并使用。你可以做的不是在用户计算机上部署程序集,而是通过Web服务提供功能。

你不能完全防止这种情况。但是你可以用这样的方式混淆你的程序集,使得暴露的类和方法没有任何合理的名称。

一个这样的混淆器是开源并称为obfuscar。一个持续的项目可以在这里找到under this link

没有简单的方法。你只能让它变得更加困难。如果你的算法非常独特和珍贵[1],使得它们不可能被第三方使用(或偷看),你唯一的选择是将逻辑放在远程位置(位于服务器后面)并让你的程序叫它。

[1]在我卑微的经历中,从来不是这样的。

您可以使用ILmerge将程序集合并到可执行文件中,然后使用模糊处理来保护整个程序包(.NET可执行文件可以视为可以链接到的程序集)。

虽然它显然不安全 - 您仍然需要在某处存储解密密钥 - 它可以很好地加密磁盘上的DLL,然后加载它们并在内存中解密。

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

我还没有发现这种方法的任何问题。另外,如果你只是担心人们在自己的项目中使用完成的DLL,那么可以在代码中添加一些堆栈检查,以及解析正在运行的程序集并对其执行散列检查。但是,这两种对策都可以很容易地从DLL中编辑出来。