Java代码是非常容易反编译的,作为一种跨平台的、解释型语言,Java 源代码被编译成中间“字节码”存储于class文件中。由于跨平台的需要,这些字节码带有许多的语义信息,很容易被反编译成Java源代码。为了很好地保护Java源代码,开发者往往会对编译好的class文件进行混淆处理。
Proguard处理流程图如下所示,包含压缩、优化、混淆、预检四个主要环节:
Proguard处理后
Proguard混淆器不仅能够保护代码,而且能够精简编译后的程序大小,减少内存占用。
混淆代码逆向分析
com.xxxxx.common.util.CryptoUtil网站也提供了一种反编译服务,如下所示:
java.lang.String
a(byte[]) -> encodeToString
java.lang.String a(byte[],boolean,java.lang.String) -> a
byte[] a(byte[],byte[]) -> encrypt
byte[] b(byte[]) -> getKey
byte[] b(byte[],byte[]) -> decrypt
byte[] d(java.lang.String) -> getKey
java.lang.String a(byte,char[]) -> a
java.lang.String a(java.io.File) -> getHash
java.lang.String a(java.lang.String) -> c
java.lang.String b(java.lang.String) -> encode