使用许可证文件保护DLL的使用/加载的最佳方法是什么?
答案 0 :(得分:5)
您可能需要考虑以下几点:
检查DLL的总和。使用cryptographic hash function,您可以将其存储在许可证文件内或DLL中。这提供了一种验证方法,用于确定我的原始DLL文件是否未被破解,或者它是否是此DLL的许可证文件。一些简单的字节交换技术可以快速将哈希函数从常规轨道中移除(因此不易再现)。
不要将哈希值存储为字符串,将其拆分为不同位置的unsigned short。
正如拉里所说,MAC地址相当普遍。有很多关于如何在The Code Project上获得该例子的例子,但要注意这些日子很容易伪造。
我的建议是,应使用private/public密钥生成许可证。
简而言之,攻击模式将是二进制的(修改DLL文件的指令),以防止这种情况或密钥生成,从而使每个许可用户,机器,甚至特定的安装。
答案 1 :(得分:4)
您可以检查DllMain()内部的许可证,如果找不到则会死亡。
答案 2 :(得分:2)
这还取决于许可算法的工作方式。我建议您考虑使用类似Diffie–Hellman key exchange(甚至RSA)的内容来生成某种公钥/私钥,这些密钥可以根据一些信息传递给您的用户。
(根据应用程序,我知道有一个案例,我在公司的合同上写了许可证代码,他们使用了MAC address和其他一些数据,对它进行了哈希处理,并对哈希进行了加密,给出了它们“关键值”,如果注册号是正确的)。这可确保密钥文件无法移动(或给定)到另一台机器,从而“窃取”软件。
如果你想深入挖掘并避开黑客,那就是一个完整的'主题......