Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何复制和保护我的Java应用程序?_Java_Licensing_Reverse Engineering_Copy Protection_Cracking - Fatal编程技术网

如何复制和保护我的Java应用程序?

如何复制和保护我的Java应用程序?,java,licensing,reverse-engineering,copy-protection,cracking,Java,Licensing,Reverse Engineering,Copy Protection,Cracking,我想使用PayPal销售我的Java应用程序。收到付款后,客户会收到一个指向我的应用程序的一次性下载链接 我的问题是,如何防止人们将.jar文件发送给朋友或上传到互联网上 显然,我需要在应用程序中进行某种检查,只允许它在一台计算机上运行。这是另一个问题,我不希望客户在一台计算机上有限制,他们应该能够在家里和工作中运行它 也许用某种cd键就可以了?有没有针对Java的cd密钥资源?还是我应该建立自己的算法?还有一个问题,逆向工程 请帮助我解决此问题:)您必须实现许可功能 作为初学者,这里有一个有趣

我想使用PayPal销售我的Java应用程序。收到付款后,客户会收到一个指向我的应用程序的一次性下载链接

我的问题是,如何防止人们将.jar文件发送给朋友或上传到互联网上

显然,我需要在应用程序中进行某种检查,只允许它在一台计算机上运行。这是另一个问题,我不希望客户在一台计算机上有限制,他们应该能够在家里和工作中运行它

也许用某种cd键就可以了?有没有针对Java的cd密钥资源?还是我应该建立自己的算法?还有一个问题,逆向工程


请帮助我解决此问题:)

您必须实现许可功能


作为初学者,这里有一个有趣的资源:

最常见的处理方法是:客户给你钱,你生成一个唯一的解锁密钥并提供给客户。钥匙应该是有效的解锁钥匙,并且应该编码用户的身份信息。客户可以使用该密钥在任意数量的计算机上安装,或者在许可证允许的情况下安装


不要担心逆向工程。如果你的产品很受欢迎的话,它将是盗版的——如果你足够努力的话,你会在网上找到解锁钥匙。如果你喜欢,你可以把它当作一种恭维——有人喜欢你的软件,甚至偷走了它。冷舒适,我知道,但另一种选择是与海盗进行军备竞赛,你不会赢的。最后,百分之几的人会偷软件,对此你无能为力。如果你的方案足够强大,你可以使用密钥的身份信息来追踪谁首先发布了密钥。

每个人对这个问题都有自己的看法,因此希望得到很多不同的建议。以下是我对它的看法:

  • 一,。混淆代码(建议使用proguard)
  • 二,。在试用期内提供具有完整功能的免费版本
  • 三,。使用基于注册用户电子邮件或其他唯一信息的序列号例程

总的来说,你将不得不接受一定数量的盗版,但如果你的应用程序是值得的,人们会为此付出代价。诚实的人是诚实的,复制保护不会让不诚实的人变得诚实。

在我看来,如果你不知道如何有效地保护你的源代码,那么就不要开始尝试自己根据硬件把一些东西混在一起。它太容易被打破,很可能只会激怒你的客户


我建议你看看Atlassian是怎么做到的。他们碰巧销售Java软件,而且显然做得很好。尝试下载,例如JIRA,并使用安装程序进行播放。这将让您很好地了解他们的许可方案是如何工作的,以及用户可以从专业软件中合理地期望得到什么。

实际上,有许多许可管理解决方案可以提供帮助,但真正的问题是,它们都可以破解。我个人试过从最贵到最便宜。最后,我推出了自己的,每次运行软件时,我都会对照服务器中记录的详细信息检查软件的pc详细信息(mac id等)。因为我的软件与互联网紧密相连,所以没关系,但我相信总有一天它会被破解

你可能需要的是定期监控互联网,并找出你的软件被盗版的地方,这与大多数情况下你实际上可以阻止他们的流行观点相反。只要在下载网站上提供DMCA(大多数都会遵守),您就可以在大约80%的情况下删除您的软件。我在我的软件上做过并体验过。有些人不删除,但我发现,在我这么做的1.5年中,我的销售额有所提高


我还使用了一项服务——它可以帮助我在自己的手工研究之外找到这些链接(我有一个专门负责这项工作的人):)

> P>在我过去的C++时代,我用MAC地址代码保护来武装盗版,非常好,而且没有任何人偷走我的软件UppOne MAC地址保护,因为我总是强迫操作系统重新读取真正的MAC避免MAC覆盖。这是在C++代码中直接访问本地资源。 今天的情况并非如此,在java应用程序中,代码位于.class文件中,这些文件总是可以解码回原始源代码(是的,这是可能的,而且很容易找到工具来实现)


我认为,作为简历,不可能保护java程序免受盗版的侵害。我发现没有一种方法可以像旧的黄金C++:(

):用试用期破解一个版本更容易。你已经有了完整的版本,你所需要的只是伪造时间。这可以追溯到我的几点——保持诚实的人诚实,模糊,接受你不会打败盗版。不完全正确。在某些情况下,执行不力的DRM会阻止诚实的人做他们有权做的事情(根据法律),并导致他们破坏您的DRM。(或者把你的软件扔出最近的窗口,再也不要和你做生意了!)没错,斯蒂芬,这个问题可能有用-我需要一个钥匙在线查询服务,对吧?我真的很喜欢第二段,尤其是
你不会赢得盗版部分。他们想复制(或者窃取,如果你想这么说的话)你的软件,他们会这么做的。你不能反对。你可以在线检查密钥,限制它们的安装频率,尽管反向工程程序不必这样做。Michael-你有没有用Java实现你的建议的例子?