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

时间:2021-07-04 07:26:16

I want to sell my Java application using PayPal. When a payment is received, the customer is mailed a one-time download link to my application.

我想用PayPal销售我的Java应用程序。收到付款后,客户会通过邮件向我的应用程序发送一次性下载链接。

My question is, how do I prevent people from sending the .jar file to their friends/uploading it on the internet?

我的问题是,如何阻止人们将.jar文件发送给他们的朋友/在互联网上上传?

Obviously I need some kind of check in the application which only allows it to run on one computer. And that's another problem, I don't want a customer to have limitations on one computer, they should be able to run it at home and work etc.

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

Maybe some kind of cd-key would do the trick? Is there any cd-key resources for Java out there? Or should i build my own algorithm? Here comes yet another problem, reverse engineering..

也许某种cd-key可以解决这个问题?那里有Java的任何cd-key资源吗?或者我应该建立自己的算法?这是另一个问题,逆向工程..

Please help me solve this :)

请帮帮我解决这个:)

6 个解决方案

#1


29  

The most common way to handle this is: customer gives you money, you generate a unique unlock key and provide that to the customer. The key should be a valid unlock key, and it should encode identification information about the user. Customer uses that key to install on as many of their computers as they like, or is allowed by the license.

处理此问题的最常见方法是:客户为您提供资金,您生成一个独特的解锁密钥并将其提供给客户。密钥应该是有效的解锁密钥,并且应该编码关于用户的标识信息。客户使用该密钥在他们喜欢的任意数量的计算机上安装,或许可证允许。

Don't worry about reverse-engineering. Your product, if it's at all popular, will be pirated - you'll find unlock keys online if you look hard enough. If you like, you can take that as a compliment - someone liked your software enough to steal it. Cold comfort, I know, but the alternative is to get in an arms race with the pirates, and you won't win that. In the end, a few percent of the population will steal software, and you can't do much about that. You can use the key's identification information, if your scheme is strong enough, to trace who released the key in the first place.

不要担心逆向工程。你的产品,如果它受欢迎,将被盗版 - 如果你看起来足够努力,你会发现在线解锁密钥。如果你愿意,你可以把它作为一种恭维 - 有人喜欢你的软件足以窃取它。我知道,冷酷的安慰,但另一种选择是与海盗进行军备竞赛,你不会赢得那个。最后,只有百分之几的人会窃取软件,而你却无法做很多事情。如果您的方案足够强大,您可以使用密钥的标识信息来跟踪首先释放密钥的人员。

#2


9  

Actually there are a number of license management solutions that can help, but the REAL problem is that all of they can be cracked. I've personally tried the most expensive to the cheapest. Finally I rolled my own, and I check the software's pc details (mac id, etc.) against the recorded details in my server every time the software is run. Because my software is tightly tied to the Internet, it is okay, but I am sure it will be cracked one of these days.

实际上有许多许可管理解决方案可以提供帮助,但真正的问题是它们都可能被破解。我个人尝试过最便宜的最贵的。最后我自己动手,每次运行软件时,都会根据我服务器中记录的详细信息检查软件的pc详细信息(mac id等)。因为我的软件与互联网紧密相关,所以没关系,但我相信这些日子会被破解。

What you probably need is to police the Internet regularly, and find where your software is being pirated, contrary to the popular belief you can actually stop them in most cases. Just serve a DMCA to the downloading website (most of them will comply), and you will be able to get your software removed in about 80% of the cases. I've done and experienced it on my software. Some people do not remove, but I've found that in the 1.5 years I've been doing this, my sales have improved.

您可能需要的是定期监管互联网,并找到您的软件被盗版的地方,这与大多数情况下您可以实际阻止它们的普遍看法相反。只需向下载网站提供DMCA(大部分都符合要求),您将能够在大约80%的情况下删除您的软件。我已经完成并在我的软件上体验过它。有些人不会删除,但我发现在我做这个的1。5年里,我的销售情况有所改善。

I also use a service -- http://spotpiracy.com which helps me find these links apart from my own manual research (i have a guy dedicated to this). :)

我也使用了一个服务 - http://spotpiracy.com,这可以帮助我找到这些链接,除了我自己的手工研究(我有一个致力于此的人)。 :)

#3


4  

Everyone has their own opinion on this subject so expect lots of different advice. Here's my take on it:

每个人对这个问题都有自己的看法,所以期待很多不同的建议。这是我的看法:

  • 1. Obfuscate your code (proguard is recommended)
  • 1.模糊你的代码(建议使用proguard)

  • 2. Offer a FREE version with full capabilities for a trial period
  • 2.提供试用期内具有全部功能的免费版本

  • 3. Use a serial number routine based on the registering users email or other unique info
  • 3.根据注册用户电子邮件或其他唯一信息使用序列号例程

Overall you will have to accept a certain amount of piracy, but if your application is worthy people will pay for it. Honest people will be honest and copy protection will not make dishonest people honest.

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

#4


2  

You must implement licensing capabilities.

您必须实现许可功能。

Here is one interesting resource as a starter: http://members.chello.at/stefan-schneider/JavaLicenseKit.html

这是一个有趣的资源作为首发:http://members.chello.at/stefan-schneider/JavaLicenseKit.html

#5


2  

In my opinion, if you don't know exactly how you will protect your source code efficiently, then don't start trying to hash something together yourself based on hardware. It will be too easy to break, and most likely just annoy your customers.

在我看来,如果你不确切地知道如何有效地保护你的源代码,那么就不要开始尝试基于硬件自己混合。这很容易打破,很可能只是惹恼了你的客户。

I would sugest you have a look at how Atlassian does this. They happen to sell Java software, and apparently do quite well. http://www.atlassian.com/ Try downloading e.g. JIRA and play with an installation. This will give you a good idea of how their licensing scheme works, and what users can reasonably expect from professional software.

我想你会看看Atlassian是如何做到这一点的。他们碰巧出售Java软件,显然做得很好。 http://www.atlassian.com/尝试下载例如JIRA和安装一起玩。这将使您了解他们的许可方案如何工作,以及用户可以合理期望从专业软件中获得什么。

#6


1  

In my old c++ days i get in arms to front the piracy using MAC Address code protection, very nice and really no body stole my software uppone the mac address protection because i always force the OS to re-read the real mac avoiding mac overrides. That was on C++ coding having direct access to local resources.

在我过去的旧c ++时代,我开始使用MAC地址代码保护来解决盗版问题,非常好,并且真的没有机构偷走我的软件来支持mac地址保护,因为我总是强迫操作系统重新读取真正的mac避免mac覆盖。这是在C ++编码上直接访问本地资源。

thats not the case today, nither in java applications in which the code is located in .class files that can always being decoded back to the original source code (yes it is possible, and very easy to find tools to do so).

这不是今天的情况,在java应用程序中,代码位于.class文件中,可以始终被解码回原始源代码(是的,这是可能的,并且非常容易找到工具)。

i think, as resume, it is impossible to protect java programs agains piracy. i find no way like the old golden c++ days :)

我认为,作为简历,不可能再保护java程序盗版。我觉得没有办法像旧的金色c ++天:)

#1


29  

The most common way to handle this is: customer gives you money, you generate a unique unlock key and provide that to the customer. The key should be a valid unlock key, and it should encode identification information about the user. Customer uses that key to install on as many of their computers as they like, or is allowed by the license.

处理此问题的最常见方法是:客户为您提供资金,您生成一个独特的解锁密钥并将其提供给客户。密钥应该是有效的解锁密钥,并且应该编码关于用户的标识信息。客户使用该密钥在他们喜欢的任意数量的计算机上安装,或许可证允许。

Don't worry about reverse-engineering. Your product, if it's at all popular, will be pirated - you'll find unlock keys online if you look hard enough. If you like, you can take that as a compliment - someone liked your software enough to steal it. Cold comfort, I know, but the alternative is to get in an arms race with the pirates, and you won't win that. In the end, a few percent of the population will steal software, and you can't do much about that. You can use the key's identification information, if your scheme is strong enough, to trace who released the key in the first place.

不要担心逆向工程。你的产品,如果它受欢迎,将被盗版 - 如果你看起来足够努力,你会发现在线解锁密钥。如果你愿意,你可以把它作为一种恭维 - 有人喜欢你的软件足以窃取它。我知道,冷酷的安慰,但另一种选择是与海盗进行军备竞赛,你不会赢得那个。最后,只有百分之几的人会窃取软件,而你却无法做很多事情。如果您的方案足够强大,您可以使用密钥的标识信息来跟踪首先释放密钥的人员。

#2


9  

Actually there are a number of license management solutions that can help, but the REAL problem is that all of they can be cracked. I've personally tried the most expensive to the cheapest. Finally I rolled my own, and I check the software's pc details (mac id, etc.) against the recorded details in my server every time the software is run. Because my software is tightly tied to the Internet, it is okay, but I am sure it will be cracked one of these days.

实际上有许多许可管理解决方案可以提供帮助,但真正的问题是它们都可能被破解。我个人尝试过最便宜的最贵的。最后我自己动手,每次运行软件时,都会根据我服务器中记录的详细信息检查软件的pc详细信息(mac id等)。因为我的软件与互联网紧密相关,所以没关系,但我相信这些日子会被破解。

What you probably need is to police the Internet regularly, and find where your software is being pirated, contrary to the popular belief you can actually stop them in most cases. Just serve a DMCA to the downloading website (most of them will comply), and you will be able to get your software removed in about 80% of the cases. I've done and experienced it on my software. Some people do not remove, but I've found that in the 1.5 years I've been doing this, my sales have improved.

您可能需要的是定期监管互联网,并找到您的软件被盗版的地方,这与大多数情况下您可以实际阻止它们的普遍看法相反。只需向下载网站提供DMCA(大部分都符合要求),您将能够在大约80%的情况下删除您的软件。我已经完成并在我的软件上体验过它。有些人不会删除,但我发现在我做这个的1。5年里,我的销售情况有所改善。

I also use a service -- http://spotpiracy.com which helps me find these links apart from my own manual research (i have a guy dedicated to this). :)

我也使用了一个服务 - http://spotpiracy.com,这可以帮助我找到这些链接,除了我自己的手工研究(我有一个致力于此的人)。 :)

#3


4  

Everyone has their own opinion on this subject so expect lots of different advice. Here's my take on it:

每个人对这个问题都有自己的看法,所以期待很多不同的建议。这是我的看法:

  • 1. Obfuscate your code (proguard is recommended)
  • 1.模糊你的代码(建议使用proguard)

  • 2. Offer a FREE version with full capabilities for a trial period
  • 2.提供试用期内具有全部功能的免费版本

  • 3. Use a serial number routine based on the registering users email or other unique info
  • 3.根据注册用户电子邮件或其他唯一信息使用序列号例程

Overall you will have to accept a certain amount of piracy, but if your application is worthy people will pay for it. Honest people will be honest and copy protection will not make dishonest people honest.

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

#4


2  

You must implement licensing capabilities.

您必须实现许可功能。

Here is one interesting resource as a starter: http://members.chello.at/stefan-schneider/JavaLicenseKit.html

这是一个有趣的资源作为首发:http://members.chello.at/stefan-schneider/JavaLicenseKit.html

#5


2  

In my opinion, if you don't know exactly how you will protect your source code efficiently, then don't start trying to hash something together yourself based on hardware. It will be too easy to break, and most likely just annoy your customers.

在我看来,如果你不确切地知道如何有效地保护你的源代码,那么就不要开始尝试基于硬件自己混合。这很容易打破,很可能只是惹恼了你的客户。

I would sugest you have a look at how Atlassian does this. They happen to sell Java software, and apparently do quite well. http://www.atlassian.com/ Try downloading e.g. JIRA and play with an installation. This will give you a good idea of how their licensing scheme works, and what users can reasonably expect from professional software.

我想你会看看Atlassian是如何做到这一点的。他们碰巧出售Java软件,显然做得很好。 http://www.atlassian.com/尝试下载例如JIRA和安装一起玩。这将使您了解他们的许可方案如何工作,以及用户可以合理期望从专业软件中获得什么。

#6


1  

In my old c++ days i get in arms to front the piracy using MAC Address code protection, very nice and really no body stole my software uppone the mac address protection because i always force the OS to re-read the real mac avoiding mac overrides. That was on C++ coding having direct access to local resources.

在我过去的旧c ++时代,我开始使用MAC地址代码保护来解决盗版问题,非常好,并且真的没有机构偷走我的软件来支持mac地址保护,因为我总是强迫操作系统重新读取真正的mac避免mac覆盖。这是在C ++编码上直接访问本地资源。

thats not the case today, nither in java applications in which the code is located in .class files that can always being decoded back to the original source code (yes it is possible, and very easy to find tools to do so).

这不是今天的情况,在java应用程序中,代码位于.class文件中,可以始终被解码回原始源代码(是的,这是可能的,并且非常容易找到工具)。

i think, as resume, it is impossible to protect java programs agains piracy. i find no way like the old golden c++ days :)

我认为,作为简历,不可能再保护java程序盗版。我觉得没有办法像旧的金色c ++天:)