安全的应用程序不会从一台PC复制到另一台PC

时间:2019-02-24 07:42:48

标签: java desktop

我已经创建了一个JavaFX应用程序。现在,我想确保它不会被复制到其他计算机。更详细地讲,我将该应用程序出售给一位客户,并且在安装了该应用程序之后,我需要确保它不会从一台计算机复制到另一台计算机。

如何防止他人复制应用程序?

2 个答案:

答案 0 :(得分:3)

规则是:您不能阻止在其计算机上具有管理员权限的用户复制该计算机上存在的任何文件的位。句号。

您能做的最好的事情是找到一个标识该特定机器的硬件标识符,并在某个地方(在可执行文件本身内部或在辅助文件中,甚至通过网络上的)对该值进行模糊处理。您拥有的服务器)。

程序运行时,可以将硬件标识符与其存储的标识符进行比较,如果不同则扼流圈。

限制:

  • 除非您自己进行安装,否则很难阻止用户在安装之前复制程序。这意味着您将需要在安装时进行在线操作,以防止从同一来源进行多次安装
  • 如果用户由于某种原因必须更换您监视的硬件,则测试将失败,同时应允许用户使用您的程序=>准备提供有关此方面的支持。并且请确保,如果您没有明确要求,那么临时用户不会仅仅因为内部网络接口已失效而就无法想象其程序不再起作用。

TL / DR:您正在尝试使用一种技术方法来解决法律问题。尽量避免。我记得在并行端口上需要特殊硬件的旧程序。这引起了太多的噩梦,因为突然出错了,我所工作的组织决定不再购买任何需要硬件密钥的软件,即使更好或更便宜。用户体验确实是一个选择标准,而那些@#&! 安全工具提供了非常糟糕的用户体验。

答案 1 :(得分:0)

您要查找的术语是DRM(“ Digital Rights management”),在大多数情况下,它是一个失败的原因。实施坚不可摧的DRM是不可能的,因为一台计算机可以做的另一台计算机也可以做,所以无法防止有人伪造“哦,它仍然是同一台计算机”。可以尝试诸如检查硬件相似性和序列号之类的事情,但是这些都可以被欺骗(至少在理论上如此),并且在实践中还会破坏合法的用例,例如更换故障硬盘。

要防止有人简单地修改程序以删除或削弱DRM也是不可能的。甚至诸如加密二进制文件的整个非DRM实现部分以及仅在DRM检查通过的情况下仅获取解密密钥之类的技术也是不够的,因为该解密密钥可以从进程的内存中捕获并用于解密加密的部分,然后就可以丢弃DRM部分。混淆会使执行此操作变得更加困难,但是如果计算机可以执行该程序,那么人们可以(有足够的时间和/或有用的软件)对程序进行逆向工程。

混淆和DRM所做的全部工作是使某人成功进行反向工程/盗版程序花费的时间更长。从理论上讲,您可能会增加难度,以至于在给定当前可用的工具的情况下,地球上没有任何人可以对软件进行反向工程以足够多的时间来删除DRM ,而所需的时间比仅克隆程序行为所需的时间要少。 ,但是您不能使之成为不可能,也不能阻止人们编写更好的逆向工程工具。


编辑:DRM毫无意义,以至于有些人只是出于娱乐目的而将其破坏,并且盗版了破碎的DRM版本而不是同一软件的无DRM版本。上面链接的Wikipedia文章中有一个有趣的故事,关于DRM的绝望(强调已添加):

  

[CD Projekt Red,Marcin的首席执行官] Iwinski谈到DRM时说:“事情太复杂了。我们发布了游戏。它在两个小时内就破解了,对于Witcher 2来说来不及了。真正令我惊讶的是, 海盗没有使用不受保护的GOG(无DRM)版本他们采用了SecuROM(商业DRM)零售版,将其破解并说“我们破解了”。 –同时有一个具有同时发行版本的非安全版本。您会认为GOG版本将是一个浮动版本。“