我想向应用程序添加许可证制度.例如:用户购买1个月的许可证,该程序到期后(Kinda Anti-Virus风格?).
问题是应用程序应该运行在可能连接到或可能不连接到互联网的系统中,所以如何保护日期时间的更改?
在加密文件中存储应用程序启动和关闭时间将不起作用,因为日期可以更改(程序正常运行时间为每天8小时,在理想情况下可以将许可证扩展到近300% – 更改时间到应用程序关闭时间1秒在启动程序之前).
另一个问题 – 有什么办法可以保护免受像http://en.wikipedia.org/wiki/Deep_Freeze_(software)这样的软件吗? (也许扫描驱动程序?)
编辑:
我目前正在使用智能卡来存储许可信息,并在关键功能上使用代码虚拟化器(我知道关于API调用断点和检查传递的数据 – 不需要隐藏数据,只是为了确保事情按计划进行)
步骤1:在Windows注册表和文件中以加密格式创建trial_tracker条目.
步骤2:将app install timestamp(yyyy-mm-dd-hh-mm-ss)分配给trial_tracker
每当应用程序启动时,检查当前系统时间戳是否大于trial_tracker,然后小于预期的到期日
>如果是,请将trial_tracker更新为当前系统时间戳并继续.
>如果没有,则trial_tracker已被篡改或试用时间过期.要求用户购买完整版或退出.
注意:用户可以通过删除Windows注册表项和加密文件来消除此问题(如果他能够找到它们).
在这种情况下,可以添加进一步的检查.例如,创建辅助Windows注册表项,以检查是否存在主注册表和加密文件.
随着这些,可以应用额外的远程检查,这取决于互联网连接(可选)