Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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_Security_Piracy - Fatal编程技术网

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

Java 如何保护我的应用程序免受盗版,java,security,piracy,Java,Security,Piracy,可能重复: 我是一个软件开发的初学者,我想知道如何在我的Java应用程序上实现一个保护系统来防止盗版。我知道没有完美的解决方案。但我只想知道如何保护它。不要告诉我要让它开源,这在我的情况下是不可能的:) 感谢您的时间和回答。由于任何许可证强制执行解决方案都可能被破解,因此我建议您根本不要尝试实施拷贝保护。许可证管理对您的用户来说很不方便 如果您决定实施拷贝保护,则可以使用开源库 此外,还应该修改字节码,使应用程序的反向工程稍微困难一些。我几年前就考虑过这一点。最终我决定不给它颁发执照;我免费赠

可能重复:

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


感谢您的时间和回答。

由于任何许可证强制执行解决方案都可能被破解,因此我建议您根本不要尝试实施拷贝保护。许可证管理对您的用户来说很不方便

如果您决定实施拷贝保护,则可以使用开源库


此外,还应该修改字节码,使应用程序的反向工程稍微困难一些。

我几年前就考虑过这一点。最终我决定不给它颁发执照;我免费赠送,但我认为我最好的主意是:

向他们发送包含密钥的许可证文件。将文件命名为其全名和电子邮件地址或类似的个人名称,并确保重命名该文件将使密钥无效。这应该很容易实现。您可以使用许多不需要在应用程序中存储密钥的技术


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

您的java代码是编译的,因此它的源代码是受保护的,如果您想保护它的复制版本,这里有一个类似的问题@Carloskijano认为java代码已经编译好了,但仍然可以通过互联网上的免费软件进行反编译,甚至初学者都可以看到您为DB连接设置了什么密码,或者您的实际代码是什么等。非常感谢您的回答。这只是“明显更难”在相对意义上。有相关技能的人可能仍然可以在几个小时内(如果不是更快的话)禁用模糊的许可证管理挂钩。@StephanC:当然,但也需要几分钟,否则:)是的,我知道没有完美的解决方案。既然你和我分享了你的想法,我将告诉你我的想法:1)我将为每个版本创建一个哈希。2) 安装前,应用程序将计算自己的哈希值并将其发送到服务器,服务器将检查(哈希值,版本)是否正确。如果没有,安装将停止,服务器将向我发送一封包含一些详细信息(IP地址、MAC地址和日期)的电子邮件。3) 现在,如果哈希值正常,将启动许可证验证。如果许可证正常,安装将开始。所有这些东西都将被加密。我知道,这还不够。@Zak001-这可能需要几个小时才能解决。但是,一旦解决方法完成,被黑客攻击的安装程序只需跳过与服务器检查的步骤,并使用先前获取的密钥进行解密。(即使为每次下载创建新的密钥/散列也不会阻止…@Zak-您在安装时假设在线连接??我的主要目的是确保任何人都可以在愿意的情况下将自己的钥匙交给其他人,但如果他们也在提供电子邮件地址(如果愿意,你也可以使用他们的家庭地址),那么他们会三思而后行。