我正在使用c ++开发一个小型Windows应用程序,我想在PC上获得某种软件/硬件指纹,以便我可以允许该应用程序仅在某些PC上运行.
我知道应用程序可以破解,但我真的很有兴趣实现这样的东西.
任何想法我怎么能实现这一目标?
它主要取决于您希望将软件与底层硬件结合的程度.例如,您可以从注册表中获取一些硬件信息,从LAN卡读取MAC地址,检索gfx制造商,CPU ID等,并散列所有这些数据.
然后,您可以将此哈希用作发送给贵公司的质询代码.然后,客户接收此哈希的签名(使用您的私钥)版本.
启动后,您的应用程序可以检查哈希的签名是好还是坏(即已由您的公司签名).
这不仅会将您的软件绑定到某个硬件配置,还会强制破解者修补您的应用程序(因为他们需要从您的可执行文件中修补公钥并替换它以便编写keygen).许多人考虑两次安装从各种来源获得的裂缝,而不是只输入从keygen复制的有效序列.
编辑:
为了检查哈希的签名,可以使用从RSA到DSA到ECC的任何内容.我可以为此推荐Crypto ++或libTomCrypt.