我已经开发了一个软件部分(使用C和Python),并希望通过加密狗进行保护,以使复制和反向工程变得非常困难。我的加密狗设备附带一个提供以下内容的API:


检查加密狗的存在
检查正确的加密狗
写入加密狗中的存储位置
从加密狗等中的内存位置读取。(我认为其余的不是那么好..)


我可以在源代码中做些什么,以使其更难破解。加密狗提供商建议,我应该在循环中或事件发生后检查加密狗的存在性,或者应该以有效的方式使用加密狗内存。但是如何?我不知道饼干是如何破裂的。请说明一下。提前致谢。

附注:请不要建议混淆。我已经做到了。

最佳答案

首先,意识到加密狗只会提供一点障碍。知道自己在做什么的人将删除对加密狗的呼叫,并对所称的任何结果都置入“ true”。每个人都会告诉你。但是您可以添加一些障碍!

我会找到您代码的关键部分,这是很难或很难知道的,需要领域知识的东西。然后将这些知识放到密钥上。着色程序例程就是一个例子。着色器例程是发送到图形卡以实现特定效果的文本文件。一个非常简单的亮度/对比度过滤器只需不到500个字符即可实现,您可以将其存储在大多数加密狗的用户空间中。然后,您将该信息放在钥匙上,并且仅使用钥匙上的信息才能显示图像。这样,如果有人尝试只是简单地删除加密狗,则程序中的所有图像都将被涂黑。有人需要拥有程序的副本,然后从密钥中获取文本文件,然后修改程序以包含该文本文件,然后知道该特定文件将是显示图像的“正确”方法。具体实现方式取决于您的部署平台。例如,如果您正在WPF中运行程序,则可以将DirectX例程存储到密钥上,然后从密钥中加载该例程并将效果应用于应用程序中的所有图像。然后,破解者必须能够拦截该DirectX例程并正确应用它。

另一种可能性是使用密钥的随机数生成例程来开发UID。一旦有人删除了加密狗功能,所有生成的UID将被清零。

不过,最好的办法是将特定于域的功能放在加密狗上(例如整个UID生成例程)。在这方面,不同的制造商将具有不同的功能。

这些聪明才智能为您带来多少障碍?实际上,这取决于程序的受欢迎程度。您的程序越受欢迎,有人越有可能想要破解它,并会花时间进行破解。在这种情况下,如果您特别擅长加密狗编码,则可能需要几天的时间。如果您的程序不那么受欢迎(比如说只有几百个客户),那么仅加密狗的存在就可以起到威慑作用,而无需做任何聪明的事情。

07-26 06:04