如何保护软件免受系统日期时间的变化?

Im0*_*ity 19 windows security datetime licensing offline

我想在应用程序中添加许可系统.例如:用户购买许可证1个月,并在该程序到期后(Kinda Anti-Virus风格?).

问题是应用程序应该在可能连接或未连接到互联网的系统中运行,那么如何防止日期时间变化?

将应用程序启动和关闭时间存储在加密文件中将不起作用,因为日期可以更改(每天8小时的程序正常运行时间,在理想情况下可以将许可证扩展到近300% - 更改应用程序关闭时间+ 1在启动计划之前的第二个).

另一个问题 - 有没有办法保护像http://en.wikipedia.org/wiki/Deep_Freeze_(software)这样的软件?(也许扫描司机?)

编辑:
我目前正在使用智能卡来存储许可信息,并将在关键功能上使用代码虚拟器(我知道在API调用上创建断点并检查传递的数据 - 不需要隐藏这些数据,只是为了确保事情如同计划)

Woo*_*ody 20

是的,可以将许可证延长高达300%,但需要付出很大的努力才能完成.坦率地说,如果有人打算花一个月的每一天将他们的时间重新设置为一秒钟,然后再开始再次使用它,那么你就没有什么可以做的了,你需要停下来的时间他们将花费你比以往更多的钱.


Har*_*eri 13

步骤1:在Windows注册表和文件中以加密格式创建trial_tracker条目.

第2步:将应用安装时间戳(yyyy-mm-dd-hh-mm-ss)分配给trial_tracker

每当应用程序启动时,检查当前系统时间戳是否大于trial_tracker并且是否低于预期的到期日期

  • 如果是,请将trial_tracker更新为当前系统时间戳并继续.

  • 如果不是,则trial_tracker已被篡改或审判时间已过期.要求用户购买完整版或退出.

注意:用户可以通过删除Windows注册表项和加密文件来逃避这一点(如果他能够找到它们).在这种情况下,可以添加进一步的检查.例如,创建辅助Windows注册表项,检查是否存在主注册表和加密文件.

除此之外,还可以应用额外的远程检查,这取决于互联网连接(可选)

  • 在 RegOpenKeyEx 上找到由带有钩子的程序添加的注册表项是微不足道的。 (2认同)
  • 如果用户在试用期结束之前更改日期怎么办?如何检查? (2认同)

ZXX*_*ZXX 9

信誉良好的游戏开发经理曾在一次会议上表示,即使使用互联网连接也不可能保护软件超过一个月 - 如果您的软件很受欢迎:-)那么您可以编写无人想要的软件,它将像以前一样安全你要 :-)))

如果在另一方面你编写了相当受欢迎的软件,那么如果只有一小部分付费用户会花费一些额外的时间,你就不会在意它们 - 无论如何他们都会续约一周.如果你真的想做短时间许可,你必须把互联网作为先决条件.如果它对某些东西有好处,它仍然会在一个月内被破解:-)但是付费客户基本上仍然会以相当轻的执行力向客户付款.

然而,如果你通过做侵入性和可怕的事情来惹恼别人,那么你将失去付费的客户并为ppl创造更大的动力来破解它.


And*_*wis 5

创建一个 Windows 服务,该服务随您的应用程序一起安装,但会自动启动。跟踪经过的时间和偏移量。为您的应用程序提供 API 以与服务对话以查询使用情况/已用时间。

  • 这可能有效,但如果我发现您的应用程序在我的机器上安装自动启动服务只是为了获得许可,我会很生气,要么更有动力去盗版它,要么切换到竞争解决方案。 (13认同)