防止复制应用程序/生成激活密码

时间:2015-09-07 00:43:34

标签: java database passwords activation

我制作了一个Java(在IntelliJ IDEA上)应用程序,我想通过USB或Dropbox将它交给某人。

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

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

或者我只能通过将我的应用程序与数据库链接并生成唯一密码来激活我的应用程序来阻止它?例如,有人要求使用我的应用程序,所以我会给他申请,但他将无法运行它。然后我生成一个密码并向他发送密码。但是,该密码只能使用一次,因此如果他尝试在2台不同的PC上使用相同的密码,则会给他一个错误。是否有关于在Java上制作类似内容的指南/教程/技巧?

1 个答案:

答案 0 :(得分:1)

您可以创建某种"激活码"对于基于其运行的硬件的某些信息生成的软件。我见过一些人使用的MAC地址,你可以用Java中的平台无关的方式获得。

但是,请记住,这些技术仅适用于最基本的用户。任何知道如何使用Google的人都可以轻松更改MAC地址,即使你使用了非常复杂的东西而不是MAC地址,Java程序也很容易反编译,一旦攻击者知道正在检查程序是否正确激活了什么功能,他/她可以轻松更换它。是的,你可以模糊你的字节码,但它只会使任务变得更难,而不是不可能。

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

不幸的是,一旦用户拥有您的程序,您无法控制他/她可以做什么。你可以确保用户根本不给他/她的程序做任何他/她不应该做的事情。例如,您可以通过网络公开您的程序功能。但是,正如您所说,没有什么能阻止用户与其他人共享登录凭据。是的,您可以检查用户是否从其他IP地址访问该页面,但是合法用户可能会遇到问题,例如,从其他wifi网络访问您的程序。在这种情况下,您的保护不仅无法解决问题,而且对诚实用户也会变得烦人。

总而言之,大型软件公司的优秀工程师多年来一直在为他们的软件提供保护,而且我还没有看到一个软件,如果花费足够的时间和精力,就不会被非法激活。