2015-09-07 37 views
1

我制作了一个Java(在IntelliJ IDEA)应用程序,我想通过USB或Dropbox将它提供给某人。防止应用程序被复制/生成激活密码

但是我不想让他把它给别人,就像你知道的那样,他下载了这个文件,所以他可以将它复制/粘贴到他的USB上,并将它传给更多的人。

有没有办法阻止应用程序在我给他的应用程序后被复制?起初,我想到了创建登录窗口,但后来我想:“嘿,如果他知道登录到应用程序的密码,他可以将应用程序给予某人,并给他密码”,所以登录窗口不是选项(我认为?)。复制一次后,可以使用If语句禁用复制/剪切功能吗?

或者我只能通过链接我的应用程序与数据库并生成独特的密码来激活我的应用程序来阻止它?例如,有人要求使用我的应用程序,所以我会给他的应用程序,但他将无法运行它。然后我生成一个密码并给他发送密码。然而,该密码只能使用一次,所以如果他将尝试在2台不同的PC上使用相同的密码,则会给他一个错误。是否有任何指导/教程/提示在Java上做类似的事情?

+0

Google“软件版权保护”。 – Andreas

回答

1

您可以为您的软件创建某种“激活码”,该软件根据有关正在运行的硬件的某些信息生成。我见过一些使用MAC地址的人,您可以通过Java以独立于平台的方式获得这些地址。

但是,请记住,这些技术只适用于最基本的用户。 MAC地址可以由任何人都知道如何使用谷歌,即使你使用的东西,令人难以置信的复杂,而不是MAC地址,Java程序都死了简单的反编译和轻易改变,一旦攻击者知道什么功能,如果程序正确激活的检查,他/她可以轻松替换它。是的,你可以混淆你的字节码,但它只会让这项任务变得更难一些,而不是不可能。

你可以做你的建议和使用,只能使用一次的密码,但随后你的程序需要知道它已经被激活,通过某处存储该信息(文件或类似的东西)。一旦用户知道信息的存储位置,它就可以在其他计算机上复制。

不幸的是,一旦用户有你的程序,你无法控制他/她能做什么。您可以确保用户不会因为完全不给他/她的计划而做他/她不应该执行的任何事情。例如,您可以通过网络展示您的程序功能。但是,正如你所说,没有什么能阻止用户与他人共享登录凭证。是的,您可以检查用户是否从不同的IP地址访问该页面,但是当合法用户在从不同的WiFi网络访问您的程序时可能会遇到问题。在这种情况下,您的保护不仅无法解决问题,而且对于诚实的用户也变得烦人。

综上所述,在巨大的软件公司辉煌的工程师一直在努力保护他们的软件多年,我还没有看到,不能被非法激活给予足够的时间和精力软件。