使用许可证文件保护 DLL 文件

发布于 2024-07-06 10:53:51 字数 1454 浏览 8 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

离线来电— 2024-07-13 10:53:51

您可能需要考虑以下几件事:

对 DLL 进行校验和。 使用加密哈希函数,您可以将其存储在许可证文件或 DLL 中。 这提供了一种验证方法来确定我的原始 DLL 文件是否未被破解,或者它是否是该 DLL 的许可证文件。 一些简单的字节交换技术可以快速使您的哈希函数脱离常规(因此不容易重现)。

不要将哈希存储为字符串,而是将其拆分为不同位置的无符号短裤。

正如 Larry 所说,MAC 地址相当常见。 代码项目上有很多关于如何实现这一点的示例,但请注意,这很简单这些天来假装。

我的建议是,应该使用 私钥/公钥 密钥来生成许可证。

简而言之,攻击模式将是二进制的(修改 DLL 文件的指令),因此要防止这种情况,或密钥生成,因此使每个许可证用户、计算机甚至安装都特定。

A couple of things you might want to consider:

Check sum the DLL. Using a cryptographic hash function, you can store this inside the license file or inside the DLL. This provides a verification method to determined if my original DLL file is unhacked, or if it is the license file for this DLL. A few simple byte swapping techniques can quickly take your hash function off the beaten track (and thus not easy to reproduce).

Don't store you hash as a string, split it into unsigned shorts in different places.

As Larry said, a MAC address is fairly common. There are lots of examples of how to get that on The Code Project, but be aware it's easy to fake these days.

My suggestion, should be use private/public keys for license generation.

In short, modes of attack will be binary (modify the instructions of your DLL file) so protect against this, or key generation so make each license user, machine, and even the install specific.

飘过的浮云 2024-07-13 10:53:51

您可以在 DllMain() 内部检查许可证,如果未找到则失败。

You can check for a license inside of DllMain() and die if it's not found.

无人接听 2024-07-13 10:53:51

它还取决于您的许可证算法的工作原理。 我建议您考虑使用 Diffie–Hellman 密钥交换 (甚至 RSA)生成某种公钥/私钥可以根据某些信息传递给您的用户。

(根据应用程序,我知道有一个案例,我在一家公司的合同上编写了许可证代码,他们使用了 MAC 地址 和其他一些数据,对其进行哈希处理,并对哈希值进行加密,如果注册号正确的话,则为它们提供“密钥值”)。 这确保了密钥文件不能被移动(或提供)到另一台机器,从而“窃取”软件。

如果你想更深入地挖掘并避免黑客,那是一个完整的“另一个话题......”

It also depends on how your license algorithm works. I'd suggest you look into using something like a Diffie–Hellman key exchange (or even RSA) to generate some sort of public/private key that can be passed to your users, based on some information.

(Depending on the application, I know of one case where I wrote the license code on contract for a company, they used a MAC address, and some other data, hashed it, and encrypted the hash, giving them the "key value", if the registration number was correct). This ensures that the key file can't be moved, (or given) to another machine, thus 'stealing' the software.

If you want to dig deeper and avoid hackers, that's a whole 'nother topic....

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文