首先,要意识到加密狗只会提供一点点障碍。知道自己在做什么的人只会删除对加密狗的调用,并为调用的任何结果输入“真”。每个人都会告诉你这个。但是您可以添加一些障碍!
我会找到你的代码的关键部分,一些很难或很难知道的东西,需要领域知识的东西。然后把这些知识放在钥匙上。一个例子是着色器例程。着色器例程是发送到图形卡以实现特定效果的文本文件;一个非常简单的亮度/对比度过滤器只需不到 500 个字符即可实现,您可以将其存储在大多数加密狗的用户空间中。然后你把这些信息放在钥匙上,并且只使用钥匙中的信息来显示图像。这样,如果有人试图简单地移除您的加密狗,您程序中的所有图像都将被涂黑。这将需要某人拥有您的程序的副本,从密钥中获取文本文件,然后修改您的程序以包含该文本文件,然后知道该特定文件将是显示图像的“正确”方式。实施细节取决于您的部署平台。例如,如果您在 WPF 中运行程序,您可能能够将 directx 例程存储到您的密钥上,然后从密钥加载该例程并将效果应用于应用程序中的所有图像。然后破解者必须能够拦截该directx 例程并正确应用它。
另一种可能性是使用密钥的随机数生成例程来开发 UID。一旦有人删除了加密狗功能,所有生成的 UID 都将归零。
不过,最好的办法是将特定领域的功能放在加密狗上(例如整个 UID 生成例程)。不同的制造商在这方面会有不同的能力。
这些聪明才智会给你带来多少障碍?实际上,这取决于您的程序的受欢迎程度。您的程序越受欢迎,就越有可能有人想要破解它,并且会花时间来破解它。在这种情况下,如果您特别擅长加密狗编码,您可能会有几天的时间。如果您的程序不那么受欢迎(比如说只有几百个客户),那么只需一个加密狗就足以威慑,而无需做任何聪明的事情。