我有一个C#.NET应用程序。该应用程序与一块硬件紧密耦合。想想ATM,推高售货亭有点事。我希望我的应用程序能够确保它在我们的硬件上运行。我们的初步计划是使用WMI获取CPU,OS,HD或其他硬件的序列号,对其进行数字签名,并将该签名随软件发送。然后,应用程序将使用其中的公钥来验证签名。有更好的方法吗?
更新1
我们不想要加密狗或搭扣。没有任何外部系统。
答案 0 :(得分:2)
是的,你会有一个半安全的系统。它可以防止在不同的硬件上运行。它还可以防止某些形式的硬件维护。
通常情况下,它不会阻止任何人反编译和更改您的软件。
答案 1 :(得分:1)
我们通过签署XML文件为软件许可做类似的事情,尽管我们并不依赖于任何硬件。同样的概念适用。效果很好。
您还需要使用某种混淆工具保护您的.NET代码,我们使用{smartassembly},但还有其他几个。
请记住,无论你做什么,如果有足够的时间和资源,有人可以绕过它。
这并不意味着您不应该保护您的知识产权,但有一点您可以获得收益递减,并为您和您的客户带来更多麻烦。