如何制作未经开发人员许可不能转售的应用程序
How to make a application that cannot be resold without the developers permission
这是我第一次从事单独的 Java 项目,该项目会通过直接销售产生收入(这意味着我会销售产品而不是第三方平台)。
我很好奇以下问题:开发人员如何防止客户简单地分发 his/her 软件?
我意识到总有办法绕过开发人员可以在他们的项目中设置的任何类型的安全措施。但是,看到我的产品将 运行 在本地(.exe 或 jar 文件),我无法监控我的客户在我出售产品后正在做什么。
有没有什么办法可以设置一些没有更高级知识的人无法绕过的“幻觉墙”?
非常感谢任何提示、建议或参考。
我为我的电脑购买的所有软件都必须通过互联网使用许可证密钥注册一次或具有 USB 许可证。所以也许这对你来说是一些想法。缺点,运行 用于产品注册的服务器或向客户发送 usb-licenser。但我很感兴趣是否有任何其他解决方案
我有一个服务器。我的某些应用程序中的某些操作将使用某些状态信息调用服务器。所以我知道谁在使用我的软件。这在合同里写得很清楚,所以没有秘密。
如果我想限制我的软件,我会执行以下操作:
- 当我的应用程序启动时,它会收集一些系统信息并hashes/CRCs它们
- 如果有一个匹配的文件,其内容与系统信息哈希匹配,我解锁应用程序
- 如果没有这样的文件,或者它里面的哈希值不匹配(不同的系统,被操纵等)我会(重新)注册
- 注册完成
-
- 通过向客户展示哈希,迫使他call/email我,或者
-
- 应用程序连接到我的服务器,检查注册信息,显示页面,然后强制用户付款或解锁,具体取决于我收集的一些其他信息。
- 在服务器端(或手动)我创建了一个匹配系统信息哈希键的键
- 该密钥返回到应用程序(互联网或手动输入)并且该应用程序检查该新代码是否与其系统信息哈希匹配
- 如果密钥匹配,将密钥写入文件,然后解锁应用程序
2 个缺点:
- java真的很容易reverse-engineer:
-
- 有人可以创建哈希生成器并创建 missing/wrong 系统信息哈希文件
-
- 如果您通过互联网连接,您应该使用 SSL/TLS,因为在其他情况下,有人可以 reverse-engineer (telnet) 应用需要解锁的答案
-
- 防止 reversen-engineering 或使其变得更加困难的一个好方法是创建纯 .exe/elf 文件。 GraalVM native-image 是可以完成这些壮举的工具之一。 (仅使用 exe 包装器在代码安全方面毫无意义,但我对用户有好处)
- 每当客户更改他的硬件时,他必须再次register/reconnect
这是我第一次从事单独的 Java 项目,该项目会通过直接销售产生收入(这意味着我会销售产品而不是第三方平台)。
我很好奇以下问题:开发人员如何防止客户简单地分发 his/her 软件?
我意识到总有办法绕过开发人员可以在他们的项目中设置的任何类型的安全措施。但是,看到我的产品将 运行 在本地(.exe 或 jar 文件),我无法监控我的客户在我出售产品后正在做什么。
有没有什么办法可以设置一些没有更高级知识的人无法绕过的“幻觉墙”?
非常感谢任何提示、建议或参考。
我为我的电脑购买的所有软件都必须通过互联网使用许可证密钥注册一次或具有 USB 许可证。所以也许这对你来说是一些想法。缺点,运行 用于产品注册的服务器或向客户发送 usb-licenser。但我很感兴趣是否有任何其他解决方案
我有一个服务器。我的某些应用程序中的某些操作将使用某些状态信息调用服务器。所以我知道谁在使用我的软件。这在合同里写得很清楚,所以没有秘密。
如果我想限制我的软件,我会执行以下操作:
- 当我的应用程序启动时,它会收集一些系统信息并hashes/CRCs它们
- 如果有一个匹配的文件,其内容与系统信息哈希匹配,我解锁应用程序
- 如果没有这样的文件,或者它里面的哈希值不匹配(不同的系统,被操纵等)我会(重新)注册
- 注册完成
-
- 通过向客户展示哈希,迫使他call/email我,或者
-
- 应用程序连接到我的服务器,检查注册信息,显示页面,然后强制用户付款或解锁,具体取决于我收集的一些其他信息。
- 在服务器端(或手动)我创建了一个匹配系统信息哈希键的键
- 该密钥返回到应用程序(互联网或手动输入)并且该应用程序检查该新代码是否与其系统信息哈希匹配
- 如果密钥匹配,将密钥写入文件,然后解锁应用程序
2 个缺点:
- java真的很容易reverse-engineer:
-
- 有人可以创建哈希生成器并创建 missing/wrong 系统信息哈希文件
-
- 如果您通过互联网连接,您应该使用 SSL/TLS,因为在其他情况下,有人可以 reverse-engineer (telnet) 应用需要解锁的答案
-
- 防止 reversen-engineering 或使其变得更加困难的一个好方法是创建纯 .exe/elf 文件。 GraalVM native-image 是可以完成这些壮举的工具之一。 (仅使用 exe 包装器在代码安全方面毫无意义,但我对用户有好处)
- 每当客户更改他的硬件时,他必须再次register/reconnect