当前位置: 首页 > 编程语言 > C#

如何保护dll?如何分享

时间:2023-04-10 19:00:50 C#

保护dll?如何保护项目的dll不被他人引用和使用?谢谢简短的回答是,除了显而易见的事情之外,您无能为力。您可能想要考虑的显而易见的事情(大致按照难度递增和合理性递减的顺序)包括:意志坚定的用户无论如何仍然可以找到使用它的方法。一个像样的反汇编程序将快速提供您需要的所有信息。请注意,如果您的DLL实际上是一个COM对象,或者更糟的是一个CLR程序集,那么您将无法在不破坏其预期用途的情况下删除大量运行时类型信息。编辑:既然你已经重申了C#和.NET是环境而不是用C编写的纯Win32DLL的暗示,我真的应该将上面的内容修改为“你不能,但是......”很长一段时间,混乱一直存在需要处理必须提供可编译源但您不想提供有用资源的环境的工具市场。有几个C#产品在那个市场上发挥作用,看起来至少有一个已经插入。因为加载程序集需要框架付出相当大的努力,所以可能会有权限位对诚实的程序集施加一些控制程序集的提供者和消费者。我还没有看到任何关于这些方法所提供的真正安全性的讨论,也完全不知道它们对确定的攻击有多有效。很大程度上取决于您的用例。如果您只是想防止随意使用,您可能会找到适合您的解决方案。如果您想保护有价值的商业机密免遭逆向工程和重复使用,您可能不会那么高兴。您面临着与DRM支持者相同的问题。如果您的程序(您希望能够运行DLL)可由某个用户帐户运行,那么没有什么可以阻止身份明确的程序员以该用户身份登录,从而隔离执行解密和解密的代码你DLL并运行它。你当然可以让逆向工程变得不方便,这可能就足够了。查看StrongNameIdentityPermissionAttribute。它允许您声明对程序集的访问。将它与像CodeVeil(免责声明,我出售CodeVeil)这样的优秀代码保护工具相结合,您就可以开始使用了。您可以将它嵌入到您的可执行文件中,并在运行时提取和加载它,然后调用它。或者您可以使用某种共享密钥来加密/解密附加文件并执行上述操作。我假设您已经考虑过编译它的解决方案,如果您真的不想共享它的话。如果有人真的想实现它,有很多方法可以做到。然后您可以将所有“公共”类标记为“内部”或“受保护的内部”,然后使用[assembly:InternalsVisibleTo("")]属性标记程序集,除了标记的程序集之外,没有人可以查看内容。你试过.Netreactor吗?我最近遇到过它。有人说它很棒,但我仍在测试它。您可能对以下朋友聚会信息感兴趣:http://msdn.microsoft.com/en-us/library/0tke9fxk(VS.80).aspx以上是C#学习教程:如何保护dll?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: