如何保护我的应用程序免受盗版攻击

6

可能是重复问题:
软件许可证密钥是如何生成的?

我是一名软件开发初学者,想知道如何在我的Java应用程序上实现保护系统以防止盗版。我知道没有完美的解决方案。但我只是想知道如何保护它。不要告诉我将其公开源代码,这在我的情况下是不可能的:)。

感谢您的时间和回答。


1
你的Java代码已经编译,因此其源代码受到保护。如果你想要保护复制版本的代码,这里有一个类似的问题:https://dev59.com/mXA65IYBdhLWcg3wxBir - Carlos Quijano
@CarlosQuijano 虽然 Java 代码被编译,但仍有可能在互联网上使用免费软件进行反编译,甚至一个初学者也能看到你为数据库连接设置了什么密码或你的实际代码等。 - Airy
2个回答

8
任何许可证执行解决方案都可以通过一些努力破解,我建议您根本不要尝试实施拷贝保护。许可证管理对您的用户只是不方便。
如果您决定实施拷贝保护,您可以使用开源库。
此外,您应该混淆您的字节码,使其稍微难以反向工程化您的应用程序。

这只是相对而言“明显更困难”。如果有相关技能的人,即使是在几个小时内,也可能仍然可以禁用混淆的许可证管理钩子。 - Stephen C
@StephanC:当然可以,否则可能需要几分钟 :) - Niklas B.

1

我几年前考虑过这个问题。最终我决定不授权,而是免费提供它,但我认为我的最佳想法是:

发送一个包含密钥的许可文件给他们。使用他们的全名和电子邮件地址或其他同样个人化的方式命名该文件,并确保重命名将使密钥无效。这应该很容易实现。有许多技术可以使用,而不需要在您的应用程序中存储密钥。

像任何系统一样,这并不是无法破解的,但正如多年前向我解释的那样,安全性是为了让诚实的人保持诚实。


是的,我知道没有完美的解决方案。 - Zak001
2
既然你和我分享了你的想法,那我也告诉你我的想法: 1)我会为每个版本创建一个哈希值。 2)在安装之前,应用程序将计算自己的哈希值并将其发送到服务器,服务器将检查(哈希值,版本)是否正确。如果不正确,则安装将停止,并且服务器将向我发送一封电子邮件,其中包含一些详细信息(IP地址、MAC地址和日期)。 3)现在,如果哈希值正确,将启动许可证验证。如果许可证正确,则安装将开始。所有这些都将被加密。我知道,这还不够。 - Zak001
1
@Zak001 - 这可能需要几个小时来解决。但是一旦解决方法被找到,黑客安装程序将简单地跳过与服务器的检查步骤,并使用先前获取的密钥进行解密。(即使为每个下载创建新的密钥/哈希也无法防止这种情况发生...) - Stephen C
@Zak - 你假设安装时有在线连接吗?我的主要目的是确保任何人都可以随意将他们的密钥赠送给其他人,但如果他们还赠送了电子邮件地址(如果您愿意,也可以使用家庭地址),那么他们会三思而后行。 - OldCurmudgeon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接