在Java(桌面)应用程序中许可优质内容

时间:2014-01-19 11:55:06

标签: java

我注意到已经存在一些关于如何对下面列出的商业Java应用程序进行许可保护的问题,虽然我同意普遍的共识,即所有这些保护将不可避免地被确定的足够的海盗击败,但我仍然认为只要它不会引起合法用户的刺激,一些保护比没有保护好。

Best Practice: License enforcement for Java Desktop application

How do I copy-protect my Java application?

How to protect my application against piracy

我的问题涉及许可其他内容的特定解决方案的可行性。我正在考虑发布一个完全可用的免费版本的模型(没有废话,如限制保存或水印生成的内容)和许可额外的优质内容。

我正在考虑的一种机制是,优质内容将打包在一个单独的(小)jar中,每次应用程序通过https启动时都会(重新)下载,并且只保留在内存中。因此,在启用优质内容的情况下启动应用程序需要互联网连接,如果未连接或验证失败,则还原为基本功能。

这个问题不是关于加载高级类的用户认证过程(可能是任何东西),而是关于将受限类作为网络资源捆绑的想法是多么安全(即防盗版) - 或者可能是什么这样做是为了让它更具防盗版性。

由于

3 个答案:

答案 0 :(得分:1)

如果您正在通过网络加载课程,要破解您的应用程序,您可以设置代理以查看从哪里下载jar并捕获它们,与其他人共享这些jar,然后将请求重定向到您的域到当地的地址。

对此更多“安全”你可以获取有关请求jar的PC的信息并将其包含在代码中,然后,当运行你的jar时验证同一台机器是否请求当前正在尝试运行它们的下载。 / p>

请记住,java反编译起来比较容易,有人可以使用if(true)代替所有授权逻辑。

总而言之,如果广告足够受欢迎,那么您的应用 会被盗版的某个地方,它只是在花费时间和损失的钱之间进行权衡。

答案 1 :(得分:1)

破解者可以使用Wireshark之类的工具来捕获应用和服务器之间的网络流量。这样他就可以直接从数据流中复制JAR,或者查看程序加载它的URL,并手动请求该URL以获取JAR。

使用该jar,cracker可以设置一个自己的Web服务器来托管JAR并告诉您的任何用户使用他们的hosts文件中的条目将您的域重定向到他们的域,以便从该文件加载破解者服务器。

使用不同的密钥为每个用户加密文件也无济于事,因为破解者只需向用户提供其密钥的副本,或者当您在程序的某处隐藏密钥时,他的程序副本。

答案 2 :(得分:0)

我的观点仍然是:是的,如果成功并且是的话,所有软件最终都会被盗版:仍然值得尝试在合理范围内保护您的资产。我认为加密罐子的想法“有腿”,并且有人可能需要维护一个虚假的许可证服务器才能破解它应该是对大多数怀孕者的合理劝阻(尽管我确信这对一些破解者来说)一个裂缝越难实施,就越有吸引力)。

可悲的是,我怀疑在没有虚假服务器的情况下破解它可能是可能的,尽管足够聪明的身份验证方案可能至少使这一点变得相当困难。

所有贡献都非常有用。