【问题标题】:Securing against dynamic linking in .NET [closed]防止.NET中的动态链接[关闭]
【发布时间】:2011-01-29 14:03:32
【问题描述】:

我想部署一个附加了许可证的应用程序。但是,我想防止我的 dll 在 Visual Studio 中被轻松引用。

执行此操作的常用方法是什么?我正在考虑对应用程序进行更新以防止这种情况发生,但是,代码变得依赖于体系结构。我没有针对除 Windows 之外的任何其他架构/平台,但是,在发布版本之后对应用程序进行 ngen-ing 对我来说似乎是一种解决方法。有没有其他技术可以实现这一点?

【问题讨论】:

  • 我可能是错的,但我认为 ngen 不允许您丢弃原始程序集。这是一种性能/加载时间优化,而不是混淆工具。

标签: .net security dll licensing ngen


【解决方案1】:

您不能发送经过 ngen 处理的映像,Ngen.exe 必须在目标计算机上运行。有一个专门的服务,由 .NET 安装程序安装,负责处理它。无论如何,它无助于保护任何东西,原始程序集也必须存在。

.NET 具有对许可的内置支持,但它仅适用于可设计的类。 System.ComponentModel.License 是基类声明。 LicFileLicenseProvider 是它的具体实现。

您可以购买 3rd 方的东西,加密狗是无与伦比的。无论哪种方式,您获得知识产权的唯一真正保护是在法庭上。在可见的地方声明版权,确保您的用户在使用您的代码之前经过明确的许可协议步骤。

【讨论】:

  • +1 “您的 IP 获得的唯一真正保护是在法庭上。”
  • 感谢您的信息。虽然我不同意加密狗是无与伦比的事实,但是,这对这种情况无关紧要。我会尝试获取有关许可证类的更多信息,看看它可以为我做什么。此外,我尝试将其与代码访问安全性结合起来。
【解决方案2】:

代码访问安全 (CAS)。您可以强制执行一个 LinkDemand,一直到继承链或方法或程序集,这要求所有链接的程序集都具有您需要的相同的强名称密钥和其他证据。

【讨论】:

  • 好主意,我会试着看看我能用这个做什么
【解决方案3】:

如果您使用的是安装程序,您可以在安装过程中使用 ngen。 SQL Server 会执行此操作。

你也可以混淆。它本身并不能阻止链接,但确实很难知道 dll 的作用,从而降低了它对其他进程的“有用性”。

【讨论】:

  • nobugz 说 ngen-ing 没有意义,因为原始程序集也应该存在。
  • @Henri,感谢您的指正!我会记住的。
【解决方案4】:

如果您将课程的范围更改为 Friend 会怎样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2012-12-31
    • 2016-11-17
    相关资源
    最近更新 更多