java - 实现试验

标签 java drm trial

我已经制作了一个应用程序,我希望该应用程序应该在 180 天后过期,但问题是,如果我采用系统日期,任何人都可以更改它并开始,而我也无法采用互联网日期,因为很多时候用户会离线工作。那么我该如何让它试验之后它会 self 毁灭呢?我无法放置任何其他 DRM,因为我读到检查 MAC 地址是一个非常糟糕的 DRM,并且在查看 Making commercial Java software (DRM) 之后我意识到我必须让它变得简单一些。所以我想到的想法是,我计算应用程序启动了多少次,但是我将该值存储在注册表中的哪里? (我已经读过:read/write to Windows Registry using Java)

我还读过Create a trial version of a Java application, with limited functionalityHow to create a trial version of a Java program但那里给出的答案并不令人满意。因为:
1. 在一个答案中,给出了使用“Rampart”,但这是一个付费应用程序,我不想使用它。
2.在另一个答案中,他们检查了系统日期,但正如我之前所说,我也不想使用它。
3. 一个问题和答案与功能相关,这不是我想要减少的
4. 而且其中许多需要互联网,但我的客户可能不会一直使用它

我知道没有完美的 DRM,而且每个 DRM 都可以被破解。我在这里问的是我最好的机会是什么? (注:我的用户数量有限,我不会在线销售此应用程序)

更新:我认为这个问题并不是偏离主题,因为我真正要问的是如何让我的软件试用......我只是问如何?我知道它很容易破解,但请告诉我在 java 中设置试用版的最佳方法是什么

最佳答案

发送数据文件,包中包含:

  1. 客户的全名。
  2. 发货日期。
  3. 到期日期。
  4. 整个文件的校验和,因此无法对其进行编辑。

每次运行时:

  1. 检查校验和是否仍然有效。
  2. 检查文件修改日期是否表明该文件已被篡改。
  3. 在启动屏幕中显示客户名称。
  4. 确保文件的修改日期不晚于到期日期。
  5. “触摸”文件以确保其修改日期更改为当前日期。
  6. 确保“触摸”有效。

这样:

  1. 由于修改日期会改变,因此很难制作副本。
  2. 由于来源很容易获得,因此很难将副本分发给其他人。
  3. 应该可以检测到大多数不专业的篡改。

显然 - 不添加硬件 - 不可能覆盖所有基础,但我发现这个方案效果很好。

关于java - 实现试验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915392/

相关文章:

c# - Apple "FairPlay Key Security Module"必须用 C 实现吗?

ffmpeg - 在不使用 mediafilesegmenter 的情况下创建 FairPlay Streaming (FPS) 流

java - 我应该使用哪个函数来访问 Android Crypto 插件?

python - 逐行编辑 Pandas 数据框

java - 为什么 Javadoc 会生成不兼容的 XHTML?

java - 使用 java-1.8.0-amazon-corretto 时缺少 jdk

java - solrj 子父关系查询失败

java - 来自网络服务的日志响应

ios - 我是否可以发布其某些功能和 UI 因过期日期而更改的应用程序?

python - 扭曲的试验在测试之间挂起