什么是确保一个DLL的使用/加载了许可文件的最好方法?
Answer 1:
一对夫妇的事情,你可能要考虑:
校验和的DLL。 使用加密散列函数 ,你可以存储这个许可证文件内或DLL里面。 这提供了一个验证的方法来确定。如果我原来的DLL文件是未受攻击,或者如果它是这个DLL的许可文件。 几个简单的字节交换技术,可以快速把你的哈希函数人迹罕至(因而不容易繁殖)。
不要储存你哈希为一个字符串,将它分成不同的地方无符号的短裤。
正如拉里说,MAC地址是相当普遍的。 有很多的如何获取中的实例代码项目 ,但要注意很容易伪造的这些日子。
我的建议,应该使用私有/公共密钥生成许可证。
总之,攻击的模式将是二进制(修改DLL文件的说明),所以防止这一点,或密钥生成,从而使每个许可证用户,机器,甚至安装特定。
Answer 2:
您可以检查的DllMain(内部许可证)和死,如果它没有找到。
Answer 3:
这也取决于你的许可的算法是如何工作的。 我建议你考虑使用类似的东西Diffie-Hellman密钥交换 (甚至RSA )来生成某种可以传递给用户,根据一些资料公/私钥。
(根据不同的应用程序,我知道1箱子,我写的许可证代码合同的公司,他们使用的MAC地址 ,以及其他一些数据,散列它,加密哈希,给他们“键值”,如果登记号码是正确的)。 这可确保密钥文件不能移动,(或提供)到另一台机器,从而“偷”的软件。
如果你想更深入和避免黑客,这是一个整体“诺特尔话题....
文章来源: Secure a DLL file with a license file [closed]