目前我正在开发一个C#.Net应用程序,我正在使用我之前开发的自定义控件。我需要在新的应用程序中发布dll - 但可以理解的是我不希望dll文件用于外国应用程序。
这就是为什么我需要在新应用程序中以某种方式编译自定义DLL。目前,dll已复制到应用程序目录中。
有什么想法吗?应该是琐碎的imho。
谢谢&问候, 丹尼尔
答案 0 :(得分:5)
我认为您需要考虑授权您的控件: http://msdn.microsoft.com/en-us/library/fe8b1eh9.aspx
答案 1 :(得分:3)
查看IL Merge。此实用程序允许您将多个.NET程序集组合到一个程序集中。
我引用:
ILMerge是一个实用程序,可用于将多个.NET程序集合并到一个程序集中。 ILMerge接受一组输入程序集并将它们合并到一个目标程序集中。输入程序集列表中的第一个程序集是主程序集。当主程序集是可执行文件时,目标程序集将创建为具有与主程序集相同的入口点的可执行文件。此外,如果主程序集具有强名称,并且提供了.snk文件,则使用指定的键重新签名目标程序集,以使其具有强名称。
然而,要考虑的是,人们仍然可以使用创建的程序集。考虑一下混淆和许可以保持随和,但请记住,如果有人想要你的代码足够严重,他们就会得到它。
某些事情使得它变得更加困难,例如拥有Web服务,但即使这样,这也不是完全证据。
答案 2 :(得分:1)
如果您可以使用专有控件更改DLL,则可以...
有关如何执行此操作的详细信息,请参阅此MSDN page。
答案 3 :(得分:0)
你可以做很多不同的黑客攻击,让人们更难以使用。所有这些都可以被规避,但这就是生活。
您可以在此处查看此回复,以禁止未知程序集引用您的程序集:Secure C# Assemblies from unauthorized Callers
如果你真的很紧张,你应该对你的集会进行模糊处理。这将使更难反编译。像Babel这样的东西效果很好:http://babelobfuscator.blogspot.com/
您还可以使用ILMerge将程序集存储在另一个程序集中。但是,此程序集将在运行时提取并公开。您可以沿着这些行执行某些操作,从一个程序集中提取二进制资源,并创建一个在运行时使用的临时程序集。如果有人真的有动力,他们也可以找到临时装配......
真正的问题是你想走多远!?在某些时候它是不值得的。那就是你停下来的地方。