【问题标题】:Implement piracy prevention system for a Java desktop application为 Java 桌面应用程序实施盗版预防系统
【发布时间】:2012-07-17 12:44:42
【问题描述】:

我正在尝试用 Java 创建一个桌面应用程序,

  1. 它不应该在我喜欢的另一台机器上运行。
  2. 它不应该在特定过期数据之后运行。

有什么好主意吗?请帮我。提前致谢。


据我所知(很少)我有一些建议:

对于第 1 点:通过硬编码我的应用程序的 startUp 来检查 ProcessorId(因为它是唯一的)如果它是有效的,它应该执行否则显示“过期”警报。但是为此,我应该为每个我不介意的用户提供一个单独的 jar setUp。

对于 Point2: 应维护一个加密文件,该文件将存储当前日期。在应用程序的每次启动期间。如果当前日期大于文件中的日期,我将更新文件中的日期字段。如果没有,我将显示“过期”警报。

这可能看起来很有趣,但这是我能想到的。

【问题讨论】:

  • 您的应用程序在哪个操作系统上运行?
  • @daviooh:Windows 操作系统,它没有任何互联网访问权限。
  • @DineshKumar 没有互联网/服务器连接,你几乎......不完全......实施任何类型的 DRM 都不走运。他们总是可以反编译你的 JAR,即使你可以混淆你的代码,它仍然可以被破译。基本上……你做不到

标签: java encryption privacy piracy-prevention


【解决方案1】:

无论您做什么,您都需要(至少)混淆您的代码并加密/破坏您使用的任何字符串文字。如果您阅读processorId,您会收到来自客户的愤怒电话,他们的笔记本电脑刚从维修中心更换了整个主板(今天很常见)。

任何加密文件都可以由搭便车的用户轻松删除。你必须把它藏在好地方。在 Windows 上,人们喜欢在注册表中玩这种捉迷藏游戏,尤其是它的经典部分。

只是一些随机的想法......

【讨论】:

  • @davioooh 请继续,什么?不要犹豫,做出贡献。
  • 我的意思是...你说:“在 Windows 上,人们喜欢在注册表中玩这个捉迷藏游戏”。我想知道您为 linux 环境建议的方法...
  • @davioooh 如果我有什么想不开的事情,那会在我的回答中。 Linux 是一个开源系统,应用程序通常不需要这些东西。无论如何,我没有任何经验。
【解决方案2】:

对于要求 1:

您可以维护一个数据库,其中包含为您的用户生成的密钥。在您的应用程序启动时,它可以请求一个密钥,然后调用数据库以更改要使用的密钥。您可以给每个用户一个唯一的密钥,以便在启动时输入。该系统需要在线访问才能使用您的应用程序,以便可以对数据库进行检查。

对于要求 2:

您可以维护密钥和与之关联的日期,并在启动时检查正确的日期。如果日期已过,用户将收到过期通知。

用户只需要输入一次密钥...之后,您的软件会记住该密钥,并且仅在旧密钥过期后才请求新密钥。

与 Marko 的想法不同的是,这种系统需要访问 Internet 才能检查数据库。


编辑:

上述方法不会阻止某人简单地复制 JAR 并将其移动到另一台机器上。您可以根据机器的 MAC 地址生成密钥,然后在启动时检查系统地址,这将导致与上述 Marko 相同的问题,即更换主板会更改 MAC 地址。

编辑 2:

我对这个问题思考得越多,我就越清楚您需要拥有并维护一个服务器端连接以满足您的要求。此外,我不认为 Java 是您的最佳选择,因为有人可以反编译您的 JAR。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多