我正在使用 C++ 开发一个小型 Windows 应用程序,我想在 PC 上获取软件/硬件的某种指纹,以便我可以允许该应用程序仅在某些 PC 上运行。
我知道该应用程序可能会被破解,但我真的很想实现这样的功能。
任何想法我怎么能做到这一点?
最佳答案
这基本上取决于您希望将软件与底层硬件耦合的紧密程度。例如,您可以从注册表中获取一些硬件信息,从 LAN 卡中读取 MAC 地址,检索 gfx 制造商、CPU id 等,然后对所有这些数据进行哈希处理。
然后您可以将此散列用作 challenge发送到贵公司的代码。然后,客户会收到此哈希的签名(使用您的私钥)版本。
启动后,您的应用程序能够检查哈希签名是好是坏(即已由您的公司签名)。
这不仅将您的软件绑定(bind)到特定的硬件配置,而且还迫使破解者为您的应用程序打补丁(因为他们需要从您的可执行文件中打补丁并替换它以编写注册机)。许多人考虑两次安装从各种来源获得的破解,而不是只输入从注册机复制的有效序列号。
编辑:
为了检查散列的签名,RSA 中的任何内容在 DSA至 ECC可以使用。我可以推荐Crypto++或 libTomCrypt为此。
关于c++ - 如何在 c/c++ 中从 Windows PC 获取唯一的硬件/软件签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/534215/