当前位置:  开发笔记 > 编程语言 > 正文

制作商业Java软件(DRM)

如何解决《制作商业Java软件(DRM)》经验,为你挑选了3个好方法。

我打算制作一些通过互联网销售的软件.我之前只创建过开源,所以我真的不知道如何保护它免受破解和分发为warez.请记住,我知道两个程序既没有破解或没有真正有用,我认为唯一或多或少可靠的方式可能如下所示:

    连接到服务器并提供许可信息和某种硬件摘要信息

    如果一切正常,服务器将返回绑定到该特定PC的程序的一些关键缺失部分以及2天的使用限制

    关键的东西不会保存到硬盘上,所以每次程序启动时都会下载,如果程序运行超过2天,数据会再次下载

    如果从不同的计算机使用相同的信息,请暂停客户帐户

你怎么看待这件事?这似乎有点限制,但我最好先减少销售,然后最终免费下载我的宝贝杀手级应用程序.无论如何,首先我需要一些基本的理论/教程/指南,关于如何确保用户只使用某个Java应用程序,如果他已付费,所以请建议一些.

谢谢



1> SyntaxT3rr0r..:

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

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

不要让它"工作两天":这就是我盗版大多数软件的方式......虚拟机设置"及时"和外部防火墙,以便它不再"打电话回家"(即:仅允许它要联系服务器一次,以获得试用密钥),始终从软件刚刚安装和宾果游戏重新映射,30天试用(或两天试用)已成为终身试用.为什么我这样做?要学习如何更好地保护我们的应用程序当然;)(好吧,好吧,我这样做只是为了好玩)

我们在商业Java软件中所做的是在每次启动时检查许可证.

我们有数以百计的客户,没有人曾经为此而烦恼过.不止一次.我们在每次运行时生成一个唯一的类,它在每次运行时都是不同的,这取决于客户端的启动和服务器端生成的事物的唯一性.

除了让应用程序在每次发布时都与您的服务器联系,这是收集分析的一种很好的方式:下载到试用率,每次试用的平均启动次数等等.这并不比在每个网页上都有Urchin/Google JavaScript跟踪器更令人讨厌很讨厌.

简单地向人们说明您的软件执行在线许可证检查:我们打开或关闭了一个巨大的复选框:"在线许可证验证:确定/失败".就是这样.人们知道有一张支票.如果他们不喜欢它,他们会使用劣质竞争产品,生活也很好.

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

您多久没有访问GMail,因为您的Internet连接已关闭?您多久没有访问FaceBook或SO,因为您的Internet连接已关闭?

要点是:根据服务器端进行尽可能多的计算:

执照检查

保存用户首选项

备份您的应用生成的数据

等等

没有人会抱怨.您将有0.1%的用户投诉,无论如何您不希望这些用户:他们会抱怨其他事情,并在线发布有关您的应用的负面反馈.你最好让他们根本不使用你的软件,并抱怨它需要一个永远在线的互联网连接(99.99%的目标人群,因此他们不会关心抱怨),而不是实际让他们使用应用程序,并抱怨与您的应用程序相关的其他事情.

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

字符串混淆器有助于使其更难理解.

源代码混淆器有助于使其更难理解.

类似于免费Proguard的字节码混淆器使其变得更难(并产生更快的代码,特别是在移动世界中引人注目).

如果您只发布Windows/Linux,那么您可以使用像Excelsior Jet这样的Java到本机转换器(对于初创公司而言,这种转换器不是免费且有点贵,但它会生成本机代码,您根本无法找到.java文件).

作为一个有趣的旁注,你会看到有人试图弄乱你的在线服务器...在大约30名beta测试者中,我们已经有人(我们知道试验的哪一部分)试图盗用我们的在线服务器.


@WizardOfOdds - 当公司想要在未连接到互联网的网络上运行您的软件时会发生什么?我可以想到很多行业很可能会出现这种情况,所以我想这取决于你的用户群可能是谁?
@Binary Nerd:极少数有这种需求的行业都有内部网和互联网.我会给你一个我非常了解的例子:*Broadcom*就是这样一家公司:芯片工程师至少拥有两台计算机,一台Un*x工作站运行芯片设计(高度商业机密)和另一台计算机(Windows ,Linux,Mac)在互联网上.想一想:今天真的有很少的公司人们使用计算机软件而用户却无法发送电子邮件.商业机密?两个网络或生活在石器时代,并被你的竞争对手超越.
@Webinator:-1.这是一个糟糕的建议,因为它只会惩罚合法用户(与任何DRM一样).如果一个黑客想要它足够糟糕,他会做一些像模仿你的服务器,并轻松破解你的软件.你无能为力.@roddik:最好尽量减少限制,以便尽可能少的用户觉得需要窃取你的软件.

2> lorenzog..:

我很抱歉拒绝你,但首先你应该知道你想要建立什么; 那么你应该证明你的想法不仅有效,而且还被用户所喜爱,以至于他们想要盗版它.第三,你必须确保你投入使其"安全"的时间实际上值得应用程序的价值.

如果你以1美元的价格出售它,而你只卖了10份,并且你花了100个小时使它变得安全,你就算数学并告诉我你的时间是否值得这么少钱.

这里的带回家信息是:一切都可以被破解或复制.最后有比我们更聪明的人(iPhone破解,数字电视,游戏等),没有人找到银弹.你唯一能做的就是让你的应用程序更难破解(通常以可用性,易于安装和某些使用场景的偷工减料为代价).问自己是否值得麻烦,这始终是一个很好的起点.


我看了你的帖子,并描绘了一个孤独的软件开发人员懒散在一个酒吧凳子上,手里拿着一个啤酒......(嗅)......(嗅)*NOBODY*想盗版我的软件!(嗅)...... :-)

3> Zak..:

不要打扰.

游戏行业几十年来一直在与盗版作斗争.具有中央服务器的在线多人游戏通常需要订阅才能玩.该模型对盗版具有相当的抵抗力.尽管在DRM上进行了无数次尝试,但几乎所有其他游戏都受到严重盗版.

您的应用程序将被破解和盗版,无论您使用何种语言编写,以及您使用哪些工具来防止它.如果您的DRM确实有效,那么盗版它的人仍然不会购买它.此外,合法用户更喜欢其他没有侵入式DRM的产品.如果没有竞争产品而你的产品有任何市场可言,那么有人会创造一个.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有