为Java桌面应用程序实施防盗系统

时间:2012-07-18 13:04:56

标签: java encryption privacy piracy-prevention

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

  1. 它不应该在我喜欢的另一台机器上运行。
  2. 在特定的到期数据之后不应该运行。
  3. 这样做有什么好主意吗?请帮我。提前谢谢。


    根据我的知识(非常少),我有一些建议:

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

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

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

2 个答案:

答案 0 :(得分:2)

无论你做什么,你都需要模糊你的代码(至少)并加密/破坏你使用的任何字符串文字。如果您阅读了processorId,那么您的笔记本电脑刚从服务中取代整个主板的客户(今天非常普遍的做法)就会发出愤怒的电话。

任何加密文件都可以由自由用户删除。你必须把它隐藏在好的地方。在Windows上,人们喜欢在注册表中玩这个捉迷藏游戏,特别是它的分类部分。

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

答案 1 :(得分:2)

对于要求1:

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

对于要求2:

您可以维护密钥和与其关联的日期,并在启动时对正确的日期进行检查。如果日期已过,则用户获得过期通知。

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

这里对Marko的想法的权衡是这种系统需要互联网访问来检查数据库。


编辑:

如上所述的这种方法不会阻止某人简单地复制JAR并将其移动到不同的机器上。你可以根据机器的MAC地址生成密钥,然后检查启动螺母的系统地址,这会导致Marko上面描述的相同问题,主板替换会改变MAC地址。

编辑2:

我越想到这个问题,我就越清楚你需要拥有并维护一个服务器端连接以满足您的需求。另外我不认为Java是你最好的选择,因为有人可以反编译你的JAR。