Protector4J 是如何工作的?

当前 Java 代码保护方案的问题

在了解 Protector4J 的工作原理之前,让我们先了解一下其他 Java 代码保护方案存在的问题。

代码混淆

由于 JVM 字节码具有高度语义化的特性,非常容易被分析和阅读。通过动态调试,其执行逻辑可以被轻松分析,因此混淆不是一种可靠的保护方案。

更多信息请参阅文章:https://protector4j.com/zh/articles/the-issues-of-code-obfuscation/

Class 文件加密

由于 JVM 附加机制的存在,所有未脱离正常 JRE 的所谓加密代码都可以通过附加工具轻松获取。因此,这是最无效的保护方案。

更多信息请参阅文章:https://protector4j.com/zh/articles/the-issues-of-class-encryption/

VMP 保护

虚拟化保护是最安全的代码保护形式,但由于其对性能的严重影响,只能应用于程序中的关键代码。其他代码仍然面临暴露风险。通过以代码的其他部分为切入点,仍可获得虚拟化代码的功能信息。

具体详情请参阅文章:https://protector4j.com/zh/articles/the-issues-of-vm-protection/

AOT 编译

AOT 编译的配置和编译非常困难,编译失败的概率很高。即使编译成功,代码逻辑也只是从字节码表示转换为机器码表示,其固有逻辑仍然存在,没有任何特殊保护。如果能够理解其编译和执行机制,仍然可以逆向工程还原出可读代码。

更多信息请参阅文章:https://protector4j.com/zh/articles/the-issues-of-aot-protection/

Protector4J 是如何工作的?

我们定义了一种私有压缩包格式:JARX

为了保护 Java 代码,我们创建了一种名为 JARX 的私有压缩文档格式,并将其集成到 JVM 运行时中。经过 Protector4J 处理的 JAR 文件会被转换为 JARX 格式。

我们对 JVM 进行了深度定制和修改

通过深入研究 JVM,我们对其进行了深度定制和修改。我们移除了所有额外机制,并在二进制安全层面进行了大量加固和优化。 这可以防止破解者使用现有方法导出您的类信息。我们相信,以目前的强度,由 Protector4J 保护的加密应用程序具有很高的安全级别。 然而,破解与反破解之间的较量始终是持续不断的提升。我们将继续改进加密和保护方案,不断增强应用程序的安全性。