Java常见反编译工具汇总
java 文件是高级语言代码,class 文件是低级语言代码。编译过程实际上是通过 Java 编译器将高级语言的源代码编译为低级语言代码。那么反过来,是否可以通过低级语言代码进行反向工程,获取其源代码呢?
答案是肯定的,这个过程就叫作反编译。
虽然,机器语言很难反编译为源代码,但是中间代码是可以进行反编译的,比如用户可以把 javac 编译得到的 class 文件进行反编译,将其转换为 java 文件。通过反编译,我们可以了解别人的代码内容,学习别人的代码的实现思路,还可以通过源代码查找 Bug、制作外挂等。
Java 中有很多反编译工具,最常用的有如下几种。
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
答案是肯定的,这个过程就叫作反编译。
虽然,机器语言很难反编译为源代码,但是中间代码是可以进行反编译的,比如用户可以把 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笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。