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 保护的加密应用程序具有很高的安全级别。 然而,破解与反破解之间的较量始终是持续不断的提升。我们将继续改进加密和保护方案,不断增强应用程序的安全性。