我已经创建了JavaFx应用程序。现在,我想将其保护以防止复制到其他计算机上。更详细地讲,我将我的应用程序出售给一位客户,安装此应用程序后,我需要保护它从一台计算机复制到其他计算机上。我如何防止从其他计算机复制它。应用程序为jar格式
答案 0 :(得分:1)
理论上讲,你做不到。
但是:您可以做一些事情来减少机会。我会从最安全的角度提起它们。
哪个是:远程许可(也称为将许可保存在服务器中)。您的应用程序可以生成一种独特的 id ,并且每当启动时,它都会检查该id是否在远程服务器的数据库中。 (这里的一个不错的选择是将RESTful服务作为后端。然后一个HTTP请求就足够了。)如果该ID在远程站点中不存在,则程序将终止。
如果客户端没有互联网连接怎么办? 终止了吗?
有一个选项可以解决这个问题,但是仍然可以被“绕过”。无论何时启动(通过Internet连接),它都会在本地(文件,注册表或其他内容)存储“肯定”答案。然后,只要客户端未连接到Internet(远程检查失败),您的程序就会开始在本地搜索“肯定”答案。如果找到它,它将启动。
如果客户端对应用程序进行逆向工程,怎么找到它存储的位置 “肯定”答案,手动创建它,然后将规则添加到他的 防火墙以防止您的应用程序与遥控器通话?
你告诉我。我能想到的最好的办法是检查远程检查失败的防火墙规则。
第二个选项:创建第二个.jar,生成一个“肯定”答案(如上所述)。对您的客户端运行此.jar。然后从他的电脑中删除它。然后,您的应用程序将寻找此“肯定”答案。如果存在,则应用程序运行。否则,它将终止。如果他将应用程序复制到另一台PC上,则该应用程序将无法运行,因为您没有在那里运行第二个jar。
如果他对您的应用程序进行反向工程并找到您在何处以及如何存储,该怎么办 这个“肯定”的答案?
他将能够复制您的应用程序,而您将一无所知。