1. Protector4J 的工作原理

    Protector4J 通过将 jar 文件转换为私有加密的 jarx 文件来保护您的 Java 源代码,我们采取多种方法从 JVM 和二进制级别确保您的应用程序安全,提供高强度的应用程序保护。

  2. 代码混淆的问题

    由于 JVM 字节码语义化程度高,因此极易分析和阅读。利用动态调试可以轻松分析其运行逻辑。编写动态调试工具并非难事。因此,混淆并非可靠的保护方案。

  3. 类加密的问题

    由于JVM存在附加机制,所有未与正常JVM运行分离的所谓加密代码都可以使用附加工具轻松读取。因此,这是最无效的保护方案。

  4. 虚拟机保护方面的问题

    虚拟化保护是最安全的代码保护方法,但由于其对性能的显著影响,无法应用于程序中的所有代码。它只能保护关键代码,而其他代码仍然存在暴露的风险。通过针对代码的其他部分,可以获取有关虚拟化代码部分的功能信息。

  5. AOT编译的问题

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

  6. 使用 vlx-vmengine 进行反混淆

    使用 JVM 字节码执行引擎 vlx-vmengine 对 Java 代码进行反混淆

  7. 用 Java/Kotlin 编写的 JVM 字节码执行引擎

    传统的Java动态调试只能基于源代码进行,如果没有源代码或混淆后的Java类文件,动态调试是不可能的。Java程序的运行依赖于JVM,而JVM以字节码作为执行基础。我们使用Kotlin构建了一个JVM字节码执行引擎,它可以与IDEA等现代IDE配合使用,在字节码级别调试Java程序,从而观察程序的运行行为。

  8. GraalVM NativeImage 逆向工程

    对于已经进入二进制编译时代的Java程序,它们的代码是否还能像字节码时代那样轻松地被逆向编译?NativeImage编译的二进制文件有哪些特点?二进制编译的强度是否足以保护重要代码?为了探究上述问题,我最近编写了一个NativeImage分析工具,并已达到一定的逆向推导水平。

  9. 使用 jhsdb(HotSpot Debugger)入侵加密的 Java 应用程序

    一种保护 Java 代码的解决方案是对类文件进行加密。这类方案通过自定义类加载器加载加密的类文件或 JAR 文件。然而,由于 JVM 的附加机制的存在,这种方法并不有效,很容易被 JDK 自带的工具破解。

  10. 从 AOT 编译的二进制文件中提取 Java 类信息

    AOT也被认为是一种Java代码保护方案,但遗憾的是,现在很多Java程序都无法与框架分离。由于框架的复杂性,即使是使用AOT编译的程序,最终生成的二进制文件中也必须包含类信息,而这些类文件实际上整齐地排列在二进制文件的资源区域中。

  11. 什么是 JARRX 文件

    JARX 文件是我们专有的归档文件格式,它使用与 Zip 相同的 Deflate 压缩算法和 AES 加密算法来加密数据。

  12. 超越混淆的最佳 Java 代码保护解决方案

    对代码进行加密可以保护您的知识产权,并大大提高应用程序的安全性。它使得窃取知识产权、篡改代码和发现安全漏洞变得极其复杂且成本高昂,以至于一个手持免费 Java 反编译器的普通窥探者根本无法做到。

  13. Excelsior JET替代方案

    Protector4J 不仅仅是 Excelsior JET 的替代品。