2011-12-22 117 views
6

可能重复:
How are Software License Keys generated?如何保护我的应用程序,打击盗版

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

感谢您的时间和答案。

+1

您的java代码是编译的,所以它的源代码是受保护的,如果你想保护它的拷贝版本,这里有一个类似的问题http://stackoverflow.com/questions/3647255/how-do-i-copy-保护我的Java应用程序 – 2011-12-22 23:49:42

+0

@CarlosQuijano认为Java代码得到编译,但它仍然可以通过互联网免费软件availabel反编译,甚至初学者可以看到你为你的数据库连接设置了什么密码或什么是你的实际代码等等。 – 2014-09-27 09:45:38

回答

8

由于任何许可证执行解决方案都可以通过一些努力来破解,我建议您不要尝试实施防拷贝保护。许可证管理对您的用户来说只是不方便。

如果您决定实施版权保护,则可以使用开源库,如TrueLicense

此外,你应该obfuscate你的字节码,使其略微更难以逆向工程你的应用程序。

+0

非常感谢您的回答。 – Zak001 2011-12-22 23:54:40

+0

从相对意义上来说,这只是“显着更困难”。具有相关技能的人可能仍可能在几个小时内禁用混淆的许可证管理挂钩,如果速度不快的话。 – 2011-12-23 01:24:18

+0

@StephanC:当然,但它会是几分钟,否则:) – 2011-12-23 10:27:20

1

我在几年前就已经考虑过了。最终我决定不许可它;我免费赠送它,但我认为我最好的想法是:

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

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

+0

是的,我知道有没有完美的解决方案。 – Zak001 2011-12-23 00:10:25

+2

既然你与我分享你的想法,我会告诉你关于我的: 1)我会为每个版本创建一个哈希。 2)安装前,应用程序将计算它自己的散列并将其发送给服务器,以检查(散列,版本)是否正确。如果不是,安装将停止,服务器会向我发送一封包含一些详细信息(IP地址,MAC地址和日期)的电子邮件。 3)现在如果哈希值正确,许可证验证将启动。如果许可证正常,安装将开始。所有这些东西都会被加密。我知道,这还不够。 – Zak001 2011-12-23 00:18:56

+1

@ Zak001 - 可能需要几个小时才能解决。但是一旦解决方法已经完成,被黑客安装程序将简单地跳过检查服务器的步骤,并使用先前获取的密钥来执行解密。 (即使为每次下载创建新的密钥/哈希都不会阻止...) – 2011-12-23 01:30:10