我使用模块化方法在C#中构建了一个简单的演示应用程序,因此它包含一个可执行文件和几个dll.假设我将它放在一个zip文件中并交给某人,唯一的目的是他们可以通过提取文件并双击exe来试用演示应用程序.
现在,根据我的理解,获取应用程序和dll的每个人都可以在Visual Studio项目中添加对dll的引用,然后开始使用它们所拥有的任何函数/类,只要它们被声明为public.因此,他们可以获得比我希望他们访问更多的访问权限.
有没有办法禁用它,并得到一个像C++ dll一样的系统(例如,我可以给任何人很多C++ dll,如果他们不这样做,他们将很难使用其中的函数/类有头文件)?我可以以某种方式剥离dll,以便它们仍可由exe使用,但不暴露引用?或者是否有属性或我可以在代码中使用说"这个类只能用于由我构建的dlls/exes"?
你可以使用InternalsVisibleToAttribute而不是公开任何东西,但......
如果您认为有任何事情阻止某人使用您的DLL中的非公共类,那么您就错了.具有完全信任的应用程序可以访问私有和内部内容没有问题,或者他们可以使用所有公共反编译和重建DLL.
人们会建议混淆,但这不会做太多.
您应该阅读这个答案(和问题,但主要是答案):C#:如何让黑客/破解者更难以绕过或绕过许可检查?
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |