我是商业软件开发的新手。我正在努力开发2个基于Java的工具版本。
1)试用版(30天免费使用)
2)完整版
据我所知,试用版的开始日期必须记录在注册表或conf文件中。但我无法确定如何编写一个Java程序,它将时间戳写入注册表和conf文件。
任何人都可以帮助我了解如何这样做。
答案 0 :(得分:0)
首选项API 是您所需要的。
但是回到最初的目标,实现这样的系统要比将时间戳写入系统存储库或其他存储器要困难得多。
您需要确保:
您正在使用可信任的“来源”
没有人可以更改您在某处保存的时间戳 - 您需要签名 它以某种方式
您需要定期更新时间戳并将其存储在不同的位置以防止时间回滚(因此系统可以说当前时间已过去)
在理想情况下,您需要检查某个许可服务器上的许可证
即使您确定自己的时间戳来源,也很有可能使用JD-GUI反编译您的许可库并检查代码是否已删除。
要使你的检查足够强大,你需要:
对所有系统模块使用模糊处理(查看http://proguard.sourceforge.net)
请记住,有人可以在类路径中添加新依赖项,并在运行时影响许可证逻辑
将检查方法调用放在系统的不同位置
对所有与许可相关的数据使用加密
使用硬件ID(CPU,网络设备等)将许可证绑定到特定计算机
将发布日期自行编码到许可证中
许可证文件需要使用授权的权限密钥加密(阅读有关公共/私人密码的内容),并且您的系统构建也应使用适当的密钥进行签名,这意味着您需要具有良好定义的系统构建和签署流程