正如其他人所建议的那样,硬件加密狗是一种常见的方法。但是,这仍然不能解决您的问题,因为聪明的程序员可以修改您的代码以跳过加密狗检查 - 他们只需要根据检查是否通过,在您的代码中找到您分支的位置,然后修改它测试总是通过。
您可以通过混淆代码使事情变得更加困难,但您仍然回到软件领域,同样聪明的程序员可以找出混淆并仍然实现他想要的目标。
更进一步,您可以使用存储在加密狗中的密钥加密部分代码,并要求引导代码从加密狗中获取它。现在你的攻击者的工作有点复杂 - 他们必须拦截密钥并修改你的代码,以认为它是从加密狗获得的,而实际上它是硬编码的。或者你可以让加密狗自己进行解密,传递代码并取回解密的代码——所以现在你的攻击者也必须模仿它,或者只是获取解密的代码并将其永久存储在某个地方。
如您所见,就像软件保护方法一样,您可以将其任意复杂化,给攻击者增加更多负担,但历史表明,表格向攻击者倾斜。虽然破解您的计划可能很困难,但只需执行一次,之后攻击者就可以将修改后的副本分发给每个人。盗版用户现在可以轻松使用您的软件,而您的合法客户则背负着繁重的复制保护机制。为盗版者提供比合法客户更好的体验是将合法客户变成盗版者的非常好的方法,如果这是您的目标的话。
解决此问题的唯一(很大程度上是假设性的)方法称为可信计算,它依赖于向用户的计算机添加硬件,将他们可以用它做的事情限制为经过批准的操作。您可以在此处查看硬件支持的详细信息。
我强烈建议您不要使用这条路线,原因我在上面详述:与使用盗版副本的客户相比,您最终为合法客户提供了更糟糕的体验,这会积极鼓励人们不要购买您的软件。盗版是生活中的事实,即使您可以提供无懈可击的保护,有些用户也根本不会购买您的软件,但会很乐意使用非法副本。您能做的最好的事情就是为您的合法客户提供最佳体验和客户服务,使合法副本比盗版更具吸引力。