制作商业Java软件(DRM)
我打算制作一些可以通过互联网出售的软件。我以前只是创建开放源代码,所以我真的不知道如何保护它免受warez的破坏和分发。考虑到我知道两个程序都没有被破解或没有真正的用处,所以我决定唯一或多或少可靠的方法可能是这样的:
- 连接到服务器并提供许可信息和某种硬件摘要信息
- 如果一切正常,服务器将返回绑定到该特定PC的程序的某些关键缺失部分,并规定2天的使用限制
- 关键内容不会保存到硬盘驱动器,因此每次程序启动时都会下载该文件,如果程序运行超过2天,则会再次下载数据
- 如果从不同的计算机使用相同的信息,请暂停客户帐户
你怎么看待这件事?似乎有些限制,但是我最好先减少销量,然后再免费下载我宝贵的杀手级应用。无论如何,首先我需要一些有关如何确保用户仅在购买了某个Java应用程序后才能使用它的基本理论/教程/指南,因此请提出一些建议。
谢谢
回答:
我在一家销售 受保护的 Java软件的公司工作。
我不会评论用户身份验证方案,但可以评论在线许可证检查。
甚至不要让它“工作两天”:这就是我盗版大多数软件的方式…虚拟机设置为“及时返回”并在外部进行防火墙保护,以使其不再“回拨”(即:仅允许它必须与服务器联系一次,以获取试用密钥),并且总是从重新安装软件和宾果游戏的那一刻开始重新映像,因此30天的试用期(或两天的试用期)已成为终身试用。我为什么要这样做?当然,要学习如何更好地保护我们的应用程序;)(好吧,我也只是为了好玩而已)
我们在商用Java软件中所做的是在每次启动时都要检查许可证。
我们有数百名客户,却从未有人对此bit之以鼻。不止一次。我们在每次运行时都会生成一个唯一的类,该类在每次运行时都不同,这取决于客户端启动时唯一的事物以及服务器端一次生成的事物。
除了在每次启动时让应用与您的服务器联系之外,它还是一种收集分析数据的好方法:下载到试用比率,每次试用的平均启动次数等。而且,除了在每个网页上都具有Urchin
/ Google JavaScript跟踪器外,它也不再令人讨厌真讨厌
只需向人们表明您的软件可以执行在线许可证检查即可:我们没有打开或关闭一个巨大的复选框,其中说:“在线许可证验证:确定/失败”。就是这样。人们知道有支票。如果他们不喜欢它,他们会使用劣质的竞争对手产品,并且生活会很好。
人们习惯于生活在有线世界中。
由于互联网连接断开,您多久 不能 访问GMail?由于互联网连接断开,您多久 不能 访问FaceBook或SO?
重点是:取决于服务器端进行尽可能多的计算:
- 许可证检查
- 保存用户首选项
- 备份您的应用程序生成的数据
- 等等
没有人会抱怨。您将有0.1%的用户抱怨,并且无论如何您都不希望这些用户:他们是会抱怨其他事情并在线发布有关您的应用的负面反馈的人。您最好让他们根本不使用软件,并抱怨它需要始终在线的互联网连接(99.99%的目标人口,因此他们不会在意该抱怨),而不是实际使用它们该应用程序,并抱怨与您的应用程序相关的其他事情。
关于反编译,通常可以将.class反编译为.java,除非您使用的代码流混淆器生成有效的字节码,但无法从.java文件生成(因此无法获取有效的.java文件)
)。
字符串混淆器有助于更难弄清。
源代码混淆器使查找起来更加困难。
像免费的Proguard这样的字节码混淆器使查明它变得更加困难(并且产生更快的代码,尤其是在移动世界中引人注意)。
如果仅运送Windows / Linux,则可以使用Java到本机的转换器,例如Excelsior
Jet(这不是免费的,对于启动公司来说有点贵,但是它会生成本机代码,您根本 无法从中 找到.java文件)。
有趣的是,您会看到有人试图弄乱您的在线服务器…在大约30个Beta测试人员中,我们已经有人(我们知道该试验的一部分)试图盗版我们的在线服务器。
以上是 制作商业Java软件(DRM) 的全部内容, 来源链接: utcz.com/qa/400390.html