JAVA反编译工具是一种可以将已编译的JAVA程序反向转换成可读的源代码的工具。这样可以帮助开发人员了解已有的JAVA程序的实现逻辑,进行代码分析,以及进行修改和优化等工作。今天就给大家介绍几种反编译工具。

源码如下所示:

public class XFTest {
    public static void main(String[] args) {
        String str = "a";
        switch (str) {
            case "a":
                System.out.println("a");
                break;
            case "b":
                System.out.println("b");
                break;
            default:
                System.out.println("c");
                break;
        }
    }
}

jmap

javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。javap和其他两个反编译工具最大的区别是他生成的文件并不是java文件,也不像其他两个工具生成代码那样更容易理解。拿一段简单的代码举例,如我们想分析Java 7中的switch是如何支持String的,我们先有以下可以编译通过的源代码:

javap -c XFTest.class

cfr

官网:传送

java -jar cfr-0.152.jar XFTest.class

jd-gui

官网:传送

jad是一个比较不错的反编译工具,只要下载一个执行工具,就可以实现对class文件的反编译了。还是上面的源代码,使用jad反编译后内容如下:

下载地址:

下载地址

jadx-gui

官网:传送

直接打开class文件即可

下载地址:

下载地址

Beyond Compare

官网:传送

Beyond Compare是一款强大的比对工具,日常版本管理经常用到。但其自带的支持格式并不包含Java编译后的class,这时我们就需要下载导入插件去支持该格式了

插件下载地址:

下载地址

插件配置:工具—》导入设置—》选择下载好的.bcpkg结尾的文件,导入即可