您可以在应用程序中实现许多检查点。 我不知道你是否使用 HASP 但不幸的是, 可以模拟加密狗 。
首先,要意识到加密狗只会提供一点点障碍。知道他们正在做什么的人只会删除对加密狗的调用,并为所调用的结果输入“true”。每个人都会告诉你这个。但是你可以添加一些障碍!
我会找到你代码的一个关键部分,一些很难或很难知道的东西,需要领域知识的东西。然后把这些知识放在钥匙上。这方面的一个例子是着色器例程。着色器例程是发送到图形卡以实现特定效果的文本文件;一个非常简单的亮度/对比度滤镜实现的角色不到500个,你可以将它存储在大多数加密狗的用户空间中。然后将该信息放在密钥上,并仅使用密钥中的信息来显示图像。这样,如果有人试图只是简单地删除你的加密狗,程序中的所有图像都将被涂黑。这需要有人拥有你的程序副本,从密钥中获取文本文件,然后修改程序以包含该文本文件,然后知道该特定文件将是显示图像的“正确”方式。实施细节取决于您的部署平台。例如,如果您在WPF中运行程序,则可以将directx例程存储到密钥上,然后从密钥加载该例程并将效果应用于应用程序中的所有图像。然后,破解者必须能够拦截该directx例程并正确应用它。
另一种可能性是使用密钥的随机数生成例程来开发UID。只要有人删除了加密狗功能,所有生成的UID都将被清零。
但是,最好的做法是将特定于域的功能放在加密狗上(例如整个UID生成例程)。不同的制造商在这方面将具有不同的能力。
这些聪明才能给你带来多少障碍?实际上,它取决于您的程序的受欢迎程度。你的程序越受欢迎,就越有可能想要破解它,并且会把时间花在这样做上。在那种情况下,如果你特别擅长加密狗编码,你可能会有几天。如果您的程序不那么受欢迎(比方说只有几百个客户),那么加密狗的存在可能足够威慑,而不必做任何聪明的事情。
您可能希望使用Dinkey Dongles进行复制保护。
它似乎是一个非常安全的系统,文档为您提供了使用该系统提高整体安全性的提示。
http://www.microcosm.co.uk/dongles.php
破解程序将通过嗅探您的应用程序和加密狗之间的流量来破解,并禁用任何测试加密狗存在的代码或编写代码来模拟加密狗(例如通过重放记录的流量),无论哪个看起来更容易。
混淆测试代码,以及以不同方式执行测试的许多分散的代码片段,以及从测试本身在空间和时间上分离测试的效果(禁用/降级功能,显示警告等)使前者成为前者方法更难。
基于每次运行创建的每个测试来改变加密狗的内容,或者甚至可以在运行之间保留,以便天真地记录和重放流量不起作用,将使后一种方法更难。
但是,使用所描述的系统,模拟加密狗仍然是直截了当的,所以迟早有人会这样做。
如果你有能力在加密狗中执行代码,你可以移动执行对你的应用程序至关重要的功能的代码,这意味着破解者必须重新启动代码或打破加密狗的物理安全 - 一个更昂贵的提议(尽管仍然可行;意识到没有完美的安全性)。
如何通过简单的加密狗最大限度地保护?
如果存在生成文件格式的信封,请将API与Enveloper一起使用。这是一个非常基本的规则。因为我们的封套已经配备了一些反调试和混淆方法,以防止常见的新手黑客放弃黑客程序。也不建议只使用信封,因为一旦黑客可以打破其他程序中的信封保护,他们也可以打破你的。
在应用程序的很多地方调用加密狗API。例如,首次启动时,打开文件时,打开对话框时,以及处理任何信息之前。即使根本没有做任何事情,也可以做一些随机检查。
使用多个功能来保护程序。不要只使用find函数来查找插入的加密狗。
使用多个dll /库(如果适用)来调用加密狗功能。如果一个dll被黑客入侵,那么该软件的其他部分仍然使用来自另一个dll的函数。例如,将sdx.dll复制到print.dll,open.dll和其他名称,然后使用不同的名称定义每个dll的函数调用。
如果使用dll文件调用加密狗函数,请将其与可执行文件绑定在一起。有一些程序能够做到这一点;例如PEBundle。 3
我在PRLOG上有这篇文章,并发现它对于使用简单的加密狗最大化保护非常有用。也许这个链接可以帮到你
使用简单的加密狗为您的软件最大化保护
具有讽刺意味的是,你想要劝阻的不是用户盗版,而是供应商盗窃。互联网已成为一个无法无天的地方,供应商可以随意窃取和转售您的软件。在某些情况下,您有法律追索权,而在其他情况下则没有。
如前所述,没有什么是万无一失的。此外,您的安全性越复杂,就越有可能给合法用户带来麻烦或问题。
我说最安全的应用程序始终是最接近服务器的应用程序。可悲的是,用户担心它是间谍软件。
如果你对你的加密狗做了很多不同的调用,那么也许黑客只会模仿你的加密狗 - 或者找到一个单点的失败(很常见的是改变一两个字节而你的所有调用都没用)。这是一个不赢的局面。
作为PECompact的作者,我总是告诉客户他们不能依赖任何东西来保护他们的软件 - 因为如果一个专门的破解者追随它,它就会被破解。你做得越难,对他们来说就越有挑战(好玩)。
我知道这些事实,我个人在我的软件上使用非常少的保护技术。
我会说,如果有人想破解你的软件保护,他们会这样做。当你说'足够难'时 - 应该如何'足够'来解释?
加密狗可能会阻止普通用户复制您的软件 - 所以从这个意义上说它已经足够了。但任何感到需要并且能够绕过加密狗的人都可能能够超越你工程师的任何其他计划。
通过存储在卡中的秘密功能使用智能卡+加密/解密工作文件。然后软件可能被盗版,但它无法打开正确加密的工作文件。