有人可以告诉我在.Net中保护组件DLL的最佳方法是什么?
我写了一些可以公开获得的DLL组件。他们将获得相应的许可,但我想以编程方式确保没有人非法使用其解决方案中的组件。
有什么想法吗?
答案 0 :(得分:4)
试图阻止人们在技术层面上做事只会导致专心致力于通过逆向工程来阻止他们(模糊代码永远不会阻止他们,只会减慢他们的速度),干净房间设计等等。您最好的选择是加强对获得使用您的图书馆许可的人的使用条款,并维护您执行使用条款的合法权利。
答案 1 :(得分:3)
答案 2 :(得分:2)
没有“不发布”,没有100%可靠的方法可以防止未经授权的访问。
您可以查看硬件或软件许可设备。在整个代码中进行许可检查,如果设备不存在,则只需中止所有内容。
另一个想法是将程序集中的所有类型声明为internal
,然后将主应用程序EXE设置为具有InternalsVisibleTo
程序集属性的朋友程序集。这通常用于内部成员的单元测试,我不知道它在实践中有多安全。这不会阻止人们反汇编您的程序集,因此您可能仍然想要进行模糊处理,如果您要销售库并且仅打算让许可证客户使用它,这根本不起作用(因为您必须为每个人提供自定义构建顾客)。
答案 3 :(得分:1)
就像凤凰说的那样,真的没有办法完全保护你的代码,因为它们仍然可以通过像反射器这样的工具反编译。
一个这样的工具就是使用Dotfuscator。
答案 4 :(得分:1)
由于您的代码已经过模糊处理,因此您可以在调用任何方法之前强制使用许可证密钥对内置类进行实例化。如果发现密钥无效/存在,则可以显示消息框或返回错误/异常。 有许多例子说明了这一点(结帐Xceed.com),但正如之前的帖子所暗示的那样,它只是为了阻止最终用户试图非法使用你的程序集。不完全阻止它。如果有足够的时间和激励,任何事情都可能被打破。