我正在为我的商业伙伴制作一个dll,他将要整合到他的应用程序中。但我也想以某种方式锁定DLL,以便其他人不能使用它。 dll的API非常简单,因此很容易在其他地方进行逆向工程和使用。
我该怎么做?到目前为止,我唯一的想法是在DLL中添加一个函数,如果传递了正确的参数,它将解锁它。但同样,它不能是静态的,这太容易拦截,所以我正在寻找半动态的东西。
有什么想法吗?提前谢谢。
A
答案 0 :(得分:5)
你认为你实际上会因此受到任何不良影响(收入损失等)的可能性有多大?这种不良影响有多大?首先要考虑到这样做的成本。您可以使用模糊处理(可能 - 它取决于它是什么类型的DLL;本机还是.NET?)但这只会提供某些保护措施。
您需要接受您不太可能(或不可能)找到100%安全的解决方案。有灰色阴影,你为歹徒制造的难度越大,你也不得不投入更多的努力(或金钱)。它也可能使诊断问题变得更加困难(例如,混淆器会使堆栈跟踪变得复杂;有些允许将映射工具恢复到原始状态,但您可能会丢失某些信息)。
答案 1 :(得分:5)
对于.net库,这已经内置到框架中,您只需要设置它。这是一篇关于它的MSDN文章。
How to: License Components and Controls
除了liccensing之外,您还应该使用dotFuscator等工具对代码进行模糊处理。
答案 2 :(得分:3)
您似乎需要创建和使用许可证密钥:
答案 3 :(得分:2)
.NET中的快速和脏:强名称所有程序集以及将访问“锁定”dll的所有程序集。将所有API类标记为内部,而不是 public 。然后,在“锁定”的dll上,指定应该具有InternalsVisibleTo属性的内部API访问权限的dll。
答案 4 :(得分:1)
你是想保护他们免受偶然的海盗袭击吗?无论你做什么,如果软件是远程有用的,那么它将被摧毁,修补,什么不是 - 只要问任何第三方控制供应商。
你提出的任何解决方案都将被破解。有人可能只是在十六进制编辑器中打开dll并修补您执行检查,验证和验证的功能。