在渗透测试的时候需要审计的代码通常是class文件
或者jar包
,在没有源文件的情况下我们可以通过反编译class/jar
的方式阅读程序逻辑。
Java源码就是未经编译的.java
文件,我们可以很轻松的阅读其中的代码逻辑,而字节码.class
文件则是.java
文件经过编译之后产生的无法直接阅读的二进制文件,不过我们可以通过反编译工具将class文件
反编译成java源文件
。我们通常会使用到JD-GUI、Recaf、IDEA Fernflower插件、Bytecode-Viewer/Fernflower、JAD、JBE、Cafebabe、JByteMod、jclasslib等工具来反编译/分析class文件
。
当然,反编译工具很多时候也不是万能的,JD-GUI
经常遇到无法反编译或反编译过程中程序直接崩溃的情况,遇到这类情况我们通常可以使用IDEA
反编译试试,如果IDEA
也无法反编译可以使用JBE
或者JDK
自带的javap命令
来读取class类字节码
,如果连javap
都无法识别该class文件
,那么这个类可能存在无法编译问题,也有可能类文件被加密处理过(自定义ClassLoader
来loadClass
加密后的类、或者借助JNI
、JVMTI
调用动态链接库)。