编程语言
首页 > 编程语言> > java – 这会使Decompiling / Cracking变得更难吗?

java – 这会使Decompiling / Cracking变得更难吗?

作者:互联网

我目前正在开发一个商业Java应用程序,我正在尽最大努力保护它免受破解.

我有几个想法,我希望在该领域有更多经验的人可以帮助我清除它们.

我正在用服务器/客户端许可证系统保护我的软件.

简单解释许可证的工作原理:

>用户在线购买软件,并通过hist License Hash通过电子邮件发送.
>用户下载软件,并输入电子邮件中提供的许可证哈希值
>如果以前使用许可证,则软件在线检查,如果没有,则将其标记为已使用,并将用户的硬件ID链接到数据库中.下次用户登录时,服务器会将其HWID检查到提供的许可证,如果无效,则将用户从软件中踢出.
>成功验证后,软件从服务器下载并加载变量,软件无法运行.
>我的软件不断检查服务器是否有变量(步骤4),并且从不加载所有变量.

服务器/客户端之间的通信使用安全的SSL REST API进行.

我的软件使用Proguard进行模糊处理/保护.

这种方法是否足够好以防止破解,如果不能提供一些额外的技巧来使这种方法更好?

非常感谢.

解决方法:

防止破解的唯一100%证明方法是将整个业务逻辑移至云端.如果应用程序在客户端的计算机上运行,​​则可以将其破解.唯一的问题是,如果您的软件足够有趣,黑客会花时间使用它.

听起来您已经使用了混淆器,将一些数据移动到云中并按需获取.我会说你已经受到入门级黑客和一些“IT专家”的保护.我不会花更多的精力,如果更高级别的“黑客”想破解它,他们会.无论您使用什么加密,密钥(以及使用的算法)都将在您的应用程序的内存中,因此可以获得这些密钥.

现代DRM工具通过从发布的二进制文件中剥离代码的重要部分(不仅仅是变量),并从服务器上按需获取它们.他们试图为只能在特定客户的机器上运行的间隙提供这样的代码(例如,通过编译市场上每个不同处理器的代码,确保代码不会在其他模型上运行),所以收集每个可能硬件的所有缺失部分是不切实际的(或至少需要很长时间).但是使用Java很难实现.

您应该考虑的另一件事是:在每个版本中更改许可算法,并进行频繁更新.这样,真正的客户可以无缝地获得新功能和错误修正,但使用破解版本的人每次都必须搜索新的裂缝或坚持旧版本.最终他们中的一些人可能决定购买软件以避免不便.

标签:java,decompiling,cracking
来源: https://codeday.me/bug/20190823/1700694.html