制作商业Java软件(DRM)

我打算制作一些可以通过互联网出售的软件。我以前只是创建开放源代码,所以我真的不知道如何保护它免受warez的破坏和分发。考虑到我知道两个程序都没有被破解或没有真正的用处,所以我决定唯一或多或少可靠的方法可能是这样的:

  1. 连接到服务器并提供许可信息和某种硬件摘要信息
  2. 如果一切正常,服务器将返回绑定到该特定PC的程序的某些关键缺失部分,并规定2天的使用限制
  3. 关键内容不会保存到硬盘驱动器,因此每次程序启动时都会下载该文件,如果程序运行超过2天,则会再次下载数据
  4. 如果从不同的计算机使用相同的信息,请暂停客户帐户

你怎么看待这件事?似乎有些限制,但是我最好先减少销量,然后再免费下载我宝贵的杀手级应用。无论如何,首先我需要一些有关如何确保用户仅在购买了某个Java应用程序后才能使用它的基本理论/教程/指南,因此请提出一些建议。

谢谢

回答:

我在一家销售 受保护的 Java软件的公司工作。

我不会评论用户身份验证方案,但可以评论在线许可证检查。

甚至不要让它“工作两天”:这就是我盗版大多数软件的方式…虚拟机设置为“及时返回”并在外部进行防火墙保护,以使其不再“回拨”(即:仅允许它必须与服务器联系一次,以获取试用密钥),并且总是从重新安装软件和宾果游戏的那一刻开始重新映像,因此30天的试用期(或两天的试用期)已成为终身试用。我为什么要这样做?当然,要学习如何更好地保护我们的应用程序;)(好吧,我也只是为了好玩而已)

我们在商用Java软件中所做的是在每次启动时都要检查许可证。

我们有数百名客户,却从未有人对此bit之以鼻。不止一次。我们在每次运行时都会生成一个唯一的类,该类在每次运行时都不同,这取决于客户端启动时唯一的事物以及服务器端一次生成的事物。

除了在每次启动时让应用与您的服务器联系之外,它还是一种收集分析数据的好方法:下载到试用比率,每次试用的平均启动次数等。而且,除了在每个网页上都具有Urchin

/ Google JavaScript跟踪器外,它也不再令人讨厌真讨厌

只需向人们表明您的软件可以执行在线许可证检查即可:我们没有打开或关闭一个巨大的复选框,其中说:“在线许可证验证:确定/失败”。就是这样。人们知道有支票。如果他们不喜欢它,他们会使用劣质的竞争对手产品,并且生活会很好。

人们习惯于生活在有线世界中。

由于互联网连接断开,您多久 不能 访问GMail?由于互联网连接断开,您多久 不能 访问FaceBook或SO?

重点是:取决于服务器端进行尽可能多的计算:

  • 许可证检查
  • 保存用户首选项
  • 备份您的应用程序生成的数据
  • 等等

没有人会抱怨。您将有0.1%的用户抱怨,并且无论如何您都不希望这些用户:他们是会抱怨其他事情并在线发布有关您的应用的负面反馈的人。您最好让他们根本不使用软件,并抱怨它需要始终在线的互联网连接(99.99%的目标人口,因此他们不会在意该抱怨),而不是实际使用它们该应用程序,并抱怨与您的应用程序相关的其他事情。

关于反编译,通常可以将.cl​​ass反编译为.java,除非您使用的代码流混淆器生成有效的字节码,但无法从.java文件生成(因此无法获取有效的.java文件)

)。

字符串混淆器有助于更难弄清。

源代码混淆器使查找起来更加困难。

像免费的Proguard这样的字节码混淆器使查明它变得更加困难(并且产生更快的代码,尤其是在移动世界中引人注意)。

如果仅运送Windows / Linux,则可以使用Java到本机的转换器,例如Excelsior

Jet(这不是免费的,对于启动公司来说有点贵,但是它会生成本机代码,您根本 无法从中 找到.java文件)。

有趣的是,您会看到有人试图弄乱您的在线服务器…在大约30个Beta测试人员中,我们已经有人(我们知道该试验的一部分)试图盗版我们的在线服务器。

以上是 制作商业Java软件(DRM) 的全部内容, 来源链接: utcz.com/qa/400390.html

回到顶部