我想实现试用30天的功能。
我使用了注册表项,但很容易被破解。
有什么好主意吗?
答案 0 :(得分:1)
我认为现在最安全的方法是使用网络服务。但请记住,如果您的应用程序是值得的,无论您花多少时间保护它,它都会被破解。
这个想法就是这样:如果没有特定的密钥,应用程序将无法运行。当密钥不存在时,它会尝试联系Web服务。当它asnwers时,app会收到一个“临时令牌”(存储“激活”的时间戳)。
它将使用此令牌来计算剩余的天数。
如果删除令牌,应用程序会认为这是您第一次运行它并尝试连接到Web服务。应用程序发送的新令牌请求将包含第一次相同的信息,并且不会生成令牌:应用程序将显示有关您的试用期到期的消息。
另一方面,你可以尝试破解令牌,但它应该不是那么微不足道(即使它当然是可能的)。
然后,破解者将找到一种生成令牌的方法(自动生成或由webservice发送给它的不同应用凭证),或者只是跳过对已计算日期的控制(例如if data expired then expired else ok
将成为{{1 }})...)
在没有webservice的情况下可以使用相同的想法:安装程序时,将添加密钥。如果删除它,该程序将无法正常工作。密钥的内容是加密的,所以你不应该轻易地用另一个时间戳生成它。
基本概念是密钥的内容必须加密,并且密钥必须存在才能使程序正常工作。然后,谁有兴趣超越试用期必须破解应用程序中的加密算法,至少。