首页 > 编程笔记 > Java笔记

Java常见反编译工具汇总

java 文件是高级语言代码,class 文件是低级语言代码。编译过程实际上是通过 Java 编译器将高级语言的源代码编译为低级语言代码。那么反过来,是否可以通过低级语言代码进行反向工程,获取其源代码呢?

答案是肯定的,这个过程就叫作反编译。

虽然,机器语言很难反编译为源代码,但是中间代码是可以进行反编译的,比如用户可以把 javac 编译得到的 class 文件进行反编译,将其转换为 java 文件。通过反编译,我们可以了解别人的代码内容,学习别人的代码的实现思路,还可以通过源代码查找 Bug、制作外挂等。

Java 中有很多反编译工具,最常用的有如下几种。

1. javap

javap 是 JDK 自带的一个工具,可以对代码反编译,也可以查看 Java 编译器生成的字节码。javap 生成的文件并不是 java 文件,而是程序员可以看得懂的 class 字节码文件。

2. jad

jad 是一个比较不错的反编译工具,它可以把 class 文件反编译成 java 文件。但是,jad 已经很久不更新了,在对 Java 7 生成的字节码进行反编译时,偶尔会出现不支持的问题,在对 Java 8 的 lambda 表达式反编译时就彻底失败。

3. CFR

jad 很好用,但是很久没更新了,所以只能用一款新的工具替代它,CFR 是一个不错的选择,相比 jad 来说,它的语法可能会稍微复杂一些,但是好在它可以工作。

4. JD-GUI

JD-GUI 是一款功能十分强大的 Java 反编译工具,它支持对整个 jar 文件进行反编译,其中文版可直接点击进行相关代码的跳转,用户可以使用它浏览和重建源代码的即时访问方法和字段,操作十分简单。

声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。