c++ - 如何在 c/c++ 中从 Windows PC 获取唯一的硬件/软件签名

标签 c++ windows copy-protection

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

我知道该应用程序可能会被破解,但我真的很想实现这样的功能。
任何想法我怎么能做到这一点?

最佳答案

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

编辑:
为了检查散列的签名,RSA 中的任何内容在 DSAECC可以使用。我可以推荐Crypto++libTomCrypt为此。

关于c++ - 如何在 c/c++ 中从 Windows PC 获取唯一的硬件/软件签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/534215/

相关文章:

windows - "No Processes Defined"来自工头检查一个简单的 node.js Procfile

android - 如何保护C++动态库不被擅自使用?

c++ - 修改 const char* 数组的快速方法

c++ - 傅里叶变换高斯滤波误差

c++ - 两个编译器之间的答案差异

c++ - std::thread 如何存储通过其构造函数传递的可变参数?

windows - 如何运行一个可执行文件,然后在 Windows 中使用 R 杀死或终止相同的进程

python - 如何在Windows机器上的python中使用tor和selenium-webdriver?

Android游戏不断被黑客入侵

javascript - 保护专有 HTML/CSS/JavaScript 的最佳方法是什么?