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

时间:2020-03-06 14:28:12  来源:igfitidea点击:

用许可证文件保护DLL的使用/加载的最佳方法是什么?

解决方案

我们可以在DllMain()中检查许可证,如果找不到许可证,则将其终止。

它还取决于许可证算法的工作方式。我建议我们考虑使用DiffieHellman密钥交换(或者什至是RSA)之类的东西来生成可根据某些信息传递给用户的某种公共/私有密钥。

(根据应用的不同,我知道有一种情况,我在公司的合同中写了许可证代码,他们使用MAC地址和其他一些数据进行哈希处理,并对哈希值进行加密,从而为它们提供"键值",如果注册号正确)。这样可以确保密钥文件不会被移动(或者指定)到另一台机器上,从而"窃取"软件。

如果我们想更深入地研究并避免黑客入侵,那将是一个完整的'另一个话题...。

我们可能需要考虑以下几点:

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

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

正如拉里所说,MAC地址是相当普遍的。关于如何在The Code Project上获得该代码的示例很多,但请注意,如今这些都是很容易伪造的。

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

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