2009-10-15 54 views
3

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

更新1

我们不想要一个加密狗或搭扣。系统外部没有任何东西。

+0

你意识到,你可能会投入更多的资金和努力来防止其它硬件出现,而不是它的价值。任何真正想在没有签名密钥的情况下运行软件的人都可以删除您的保护。如果您需要快速修复系统,您现在也正在限制您的客户。 – 2009-10-15 20:43:02

+0

这一切都取决于情况。我们有非常特定的硬件附带的应用程序,而不是一台计算机,但支持.NET的嵌入式硬件硬件和软件作为一揽子交易,这是他们从我们这里购买的。客户不想执行维护,这就是为什么他们与我们签订合同和SLA ......这样做肯定有很好的理由,但对于大多数应用程序来说并非如此......这就是说,除非您控制每个从芯片开发到软件,你永远无法完全保护一切。 (这也是为什么苹果控制芯片的原因) – TimothyP 2012-12-27 07:50:18

+0

http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm有帮助您创建硬件锁定的工具,但不要将其用作唯一的方法。 ..混淆/锁定工具越受欢迎,人们投入更多的努力就是盗用它。并确保您与客户之间有牢固的法律协议,这是最重要的事情! – TimothyP 2012-12-27 07:52:25

回答

2

是的,你会有一个半安全系统。它可以防止在不同的硬件上运行。它也会阻止某些形式的硬件维护。

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

1

我们通过对XML文件进行签名来为软件许可做类似的事情,尽管我们的软件没有绑定到任何硬件。同样的概念适用。它运作良好。

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

请记住,不管你做什么,给予足够的时间和资源,有人可以绕过它。

这并不意味着你不应该保护你的知识产权,但有一点你会收益递减,并给你和你的客户带来更多的麻烦,这是值得的。

+0

没有混淆工具是完美的。原生代码现在甚至可以逆向工程。对于制作的每个模糊/保护工具,都可以找到它。 – IDWMaster 2011-02-22 22:34:42

相关问题