Java类文件加密存在的问题
除了混淆之外,类文件加密是一种很容易被想到的代码保护方式,许多方案采用agent的方式对类文件进行加密,并在类加载的时候解密。但这些方案都忽略了很重要的一点,即JVM自带的附加机制
JVM附加机制
为了便于对程序的运行状况进行分析与监测,普通的JVM都带有附加自制,用户可以使用jhsdb这类工具,附加到JVM进程,对其内存数据进行查看和分析,并且这些内存数据还是按照源文件中的数据结构被妥善组织好的,这也可以理解为JVM自带的一种后门机制。
下面这篇文章介绍了如何使用JVM附加机制读取并保存内存中的类文件信息
https://protector4j.com/articles/cracking-encrypted-java-applications-jhsdb/
除了可以使用JDK自带的jhsdb工具之外,还可以使用阿里巴巴的Arthas对运行中的Java进程进行分析。
结论
由于JVM附加机制的存在,所有未脱离普通JVM运行的所谓加密代码,都可以使用附加工具轻松读取,因此这是一种最无效的保护方案。