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