如何从c / c ++中的Windows PC获取独特的硬件/软件签名

时间:2009-02-10 21:10:08

标签: c++ windows copy-protection

我正在使用c ++开发一个小型Windows应用程序,我想在PC上获得某种软件/硬件指纹,以便我可以允许该应用程序仅在某些PC上运行。

我知道应用程序可以被破解,但我真的很有兴趣实现这样的东西 任何想法我怎么能实现这一目标?

3 个答案:

答案 0 :(得分:10)

这主要取决于您希望将软件与底层硬件结合的程度。例如,您可以从注册表中获取一些硬件信息,从LAN卡读取MAC地址,检索gfx制造商,CPU ID等,并散列所有这些数据。
然后,您可以将此哈希用作发送给贵公司的challenge代码。然后,客户会收到此哈希的签名(使用您的私钥)版本 启动后,您的应用程序可以检查哈希的签名是好还是坏(即已由贵公司签名)。
这不仅会将您的软件绑定到某个硬件配置,还会强制破解者修补您的应用程序(因为他们需要从您的可执行文件中修补公钥并替换它以便编写keygen)。许多人考虑两次安装从各种来源获得的裂缝,而不是只输入从keygen复制的有效序列。

修改
为了检查哈希的签名,可以使用从RSADSAECC的任何内容。我可以为此推荐Crypto++libTomCrypt

答案 1 :(得分:0)

在香草PC中没有可靠的方法可以做到这一点;人们多年来一直在努力。问题是您可能随时更改任何组件,包括CPU和BIOS ROM。最接近的人使用加密保护的“dongle”,但事实证明这两者在操作上都不尽如人意,而且不是很安全。

如果你想出一些东西,请申请专利;这将是非常有价值的。

答案 2 :(得分:0)

正如其他人所说,没有什么比你想要的更完美。我对一个类似的问题进行了半心半意的尝试,结果是混合了驱动器卷ID(不好,因为它可以重新格式化)和操作系统密钥(来自Windows)。

最后,我没有花太多时间在上面,好像人们真的想要破解你的软件,他们可能会做到这一点。我离开了那个小小的许可证“保护”,但它很糟糕。

花费时间/精力让他们想要通过突出来购买它。