【问题标题】:How can I tie my application to specific hardware?如何将我的应用程序绑定到特定硬件?
【发布时间】:2010-12-07 04:29:49
【问题描述】:

我有一个 C# .NET 应用程序。此应用程序与一个硬件紧密耦合。想想自动取款机,开车亭有点东西。我想要一种方法让我的应用程序确保它在我们的硬件上运行。我们最初的计划是使用 WMI 获取 CPU、操作系统、HD 或其他硬件的序列号,对其进行数字签名,然后将该签名与软件一起发送。然后应用程序将在其中包含公钥以验证签名。有没有更好的方法来做到这一点?

更新 1

我们不需要加密狗或搭扣。系统之外没有任何东西。

【问题讨论】:

  • 你意识到你可能会投入更多的钱和精力来防止它被其他硬件影响而不是值得的。任何真正想在没有您的签名密钥的情况下运行该软件的人都可以删除您的保护。此外,如果您的客户需要快速修复系统,您现在也在限制他们。
  • 一切视情况而定。我们的应用程序附带非常特定的硬件,不是计算机,而是支持 .NET 的嵌入式硬件。硬件和软件以打包交易的形式提供,这就是他们从我们这里购买的东西。客户不想执行维护,这就是他们与我们签订合同和 SLA 的原因……这样做当然有充分的理由,但对于大多数应用程序来说并非如此……也就是说,除非您控制每一个一方面,从芯片开发到软件,你永远不可能完全保护一切。 (这也是苹果控制芯片的原因)
  • ssware.com/cryptoobfuscator/obfuscator-net.htm 拥有可以帮助您创建硬件锁定的工具,但不要将其用作唯一的方法……混淆/锁定工具越流行,人们就越努力投入黑客攻击它。并确保您与客户签订了可靠的法律协议,这是最重要的!

标签: c# .net hardware wmi


【解决方案1】:

是的,您将拥有一个半安全系统。它可以防止在不同的硬件上运行。它还将阻止对该硬件进行某些形式的维护。

和往常一样,它不会阻止任何人反编译和更改您的软件。

【讨论】:

    【解决方案2】:

    我们通过签署 XML 文件来为软件许可做类似的事情,尽管我们的文件不绑定到任何硬件。同样的概念也适用。效果很好。

    您还需要使用某种混淆工具来保护您的 .NET 代码,我们使用{smartassembly},但还有其他几个。

    请记住,无论您做什么,只要有足够的时间和资源,就有人可以绕过它。

    这并不意味着您不应该保护自己的知识产权,但在某些情况下,您会获得收益递减并给您和您的客户带来更多麻烦,这是值得的。

    【讨论】:

    • 没有完美的混淆工具。如今,本机代码甚至可以进行逆向工程。对于制作的每一种混淆/保护工具,都有一种解决方法。
    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 2013-11-20
    • 2011-10-10
    • 2019-07-02
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多