.net 如何防止其他程序员包装我的程序集?

.net 如何防止其他程序员包装我的程序集?,.net,embed,assemblies,drm,piracy-protection,.net,Embed,Assemblies,Drm,Piracy Protection,有人能告诉我在.Net中保护我的组件DLL的最佳方法吗 我已经编写了一些DLL组件,这些组件将公开提供。它们将获得相应的许可,但我希望通过编程确保没有人非法使用其解决方案中的组件 有什么想法吗?你能做的最好的事情就是混淆你的代码。这不是100%安全的,可以进行反向工程 这是一个很好的方法。你能做的最好的事情就是混淆你的代码。这不是100%安全的,可以进行反向工程 是一个不错的选择。就像phoenix说的那样,确实没有办法完全保护您的代码,因为它们仍然可以通过reflector之类的工具进行反

有人能告诉我在.Net中保护我的组件DLL的最佳方法吗

我已经编写了一些DLL组件,这些组件将公开提供。它们将获得相应的许可,但我希望通过编程确保没有人非法使用其解决方案中的组件


有什么想法吗?

你能做的最好的事情就是混淆你的代码。这不是100%安全的,可以进行反向工程


这是一个很好的方法。

你能做的最好的事情就是混淆你的代码。这不是100%安全的,可以进行反向工程


是一个不错的选择。

就像phoenix说的那样,确实没有办法完全保护您的代码,因为它们仍然可以通过reflector之类的工具进行反编译


一个这样的工具就是使用。

就像phoenix说的那样,确实没有办法完全保护您的代码,因为它们仍然可以通过reflector这样的工具进行反编译


一个这样的工具就是使用。

试图阻止人们在技术层面上做事情只会导致专注于通过逆向工程(模糊代码永远不会阻止他们,只会减慢他们的速度)、洁净室设计等手段来阻止他们的努力。你最好的办法是向那些获得使用你的图书馆许可证的人强化使用条款,并维护你执行使用条款的合法权利。

试图阻止人们在技术层面上做事情只会导致你通过反向工程来阻止他们的努力(模糊的代码永远不会阻止它们,它只会减慢它们的速度)、洁净室设计等等。你最好的办法是向那些获得使用图书馆许可证的人强调使用条款,并维护你强制执行使用条款的合法权利。

简称“不分发”没有100%可靠的方法来防止未经授权的访问

您可以查看硬件或软件授权设备。在整个代码中进行许可证检查,如果设备不存在,只需中止所有操作

另一个想法是将程序集中的所有类型声明为
internal
,然后将主应用程序EXE设置为具有assembly属性的友元程序集。这通常用于单元测试内部成员,我不知道它在实践中的安全性如何。这不会阻止人们拆解您的assem因此,如果您正在出售该库,并且只打算为客户提供使用许可证(因为您必须为每个客户提供自定义版本),那么您可能仍然希望混淆,而这根本不起作用。

除了“不分发”之外,没有100%确定的方法来防止未经授权的访问

您可以查看硬件或软件授权设备。在整个代码中进行许可证检查,如果设备不存在,只需中止所有操作


另一个想法是将程序集中的所有类型声明为
internal
,然后将主应用程序EXE设置为具有assembly属性的友元程序集。这通常用于单元测试内部成员,我不知道它在实践中的安全性如何。这不会阻止人们拆解您的assem因此,如果您正在销售该库,并且只打算向客户提供使用该库的许可证(因为您必须向每个客户提供自定义版本),那么您可能仍然希望混淆,而这根本不起作用.

由于您的代码已被混淆,您可以在调用任何方法之前强制使用许可证密钥实例化内置类。如果发现密钥无效/不存在,您可以显示消息框或返回错误/异常。
有很多这样做的例子(checkout Xceed.com为例)但正如前面的帖子所说,这只是为了阻止最终用户非法使用你的程序集。并不是完全阻止它。如果有足够的时间和激励,任何东西都可能被破坏。

因为你的代码已经被混淆,你可以在任何一个调用方法。如果发现密钥无效/不存在,则可以显示消息框或返回错误/异常。
有很多这样做的例子(checkout Xceed.com为例)但正如前面的帖子所建议的,这只是为了阻止最终用户非法使用你的程序集。并不是完全阻止它。如果有足够的时间和激励,任何事情都可能被破坏。

看起来你基本上是在问如何在DLL上实现DRM。是的,我认为DRM风格的等价物基本上就是我想要的。看起来你基本上是在问如何在DLL上实现DRM。是的,我认为DRM风格的等效物基本上就是我要寻找的。代码已经混淆,并且有一个许可协议。我想防止的问题是其他开发人员使用组件库来提供他们的解决方案,违反了许可证agreement。我意识到这是他们的责任,我必须追捕他们,但我想知道是否还有更多的步骤,我可以采取,使它更难做到?代码已经混淆,许可协议已经到位。我想防止的问题是其他开发人员使用组件库来支持继承人的解决方案违反了许可协议。我意识到这是他们的责任,我必须追查他们,但我想知道是否还有更多的步骤可以让事情变得更加困难?谢谢,我会再仔细研究一下。干杯。谢谢,我会再仔细研究一下。干杯。我会用sat回答的虹彩般的回答:“[强制性陈词滥调]