RBe*_*eig 22
简短的回答是,除了显而易见的事情之外,你无能为力.
您可能想要考虑的显而易见的事情(大致按照增加难度和降低合理性的顺序)包括:
无论如何,充分确定的用户仍然可以找到使用它的方法.一个体面的反汇编程序将迅速提供所需的所有信息.
请注意,如果您的DLL实际上是一个COM对象,或者更糟糕的是CLR程序集,那么有大量的运行时类型信息,您无法在不破坏其预期用途的情况下将其剥离.
编辑:既然你已经重申暗示C#和.NET是环境而不是用C编写的纯Win32 DLL,那么我真的应该将上面的内容修改为"你不能,但是......"
很长一段时间以来,混淆工具一直存在一个市场,需要处理必须提供可编译源的环境,但是您不希望提供有用的资源.有一些C#产品在这个市场上发挥作用,看起来至少有一个产品已经上市了.
因为加载程序集需要从框架中付出相当大的努力,所以很可能存在权限位,它们对程序集的诚实提供者和使用者施加一些控制.我没有看到任何关于这些方法提供的真正安全性的讨论,只是不知道它们对确定的攻击有多么有效.
很多将取决于您的用例.如果您只想防止随便使用,您可能会找到适合您的解决方案.如果您想保护有价值的商业机密免受逆向工程和重用,您可能不会那么开心.
j_r*_*ker 12
您将面临与DRM的支持者相同的问题.
如果您的程序(您希望能够运行DLL)可由某个用户帐户运行,那么没有任何东西可以阻止一个充分确定的程序员,该程序员可以作为该用户登录,从而隔离执行解密和使用的代码解密你的DLL并运行它.
您当然可以使执行此逆向工程变得不方便,这可能就足够了.
看一下StrongNameIdentityPermissionAttribute.它允许您声明对程序集的访问权限.结合良好的代码保护工具(如CodeVeil(免责声明,我销售CodeVeil)),你会很高兴.
| 归档时间: |
|
| 查看次数: |
14974 次 |
| 最近记录: |