什么是Java反编译
Java反编译是一个对Java目标可执行程序进行逆向分析,从而得到原始代码的过程。
举一个例子,比如将 Java 源代码编译成 .class 字节码文件,那么把字节码文件转换成Java代码的过程就叫“反编译”。
知道了什么是Java反编译,那市面上有哪些主流Java反编译工具呢?mikechen接下来给大家详解四款。
Java反编译Jadclipse
JAD 是一款老牌的、经典的、使用起来简单的 Java 反编译工具,和eclipse的插件JadClipse,二者结合可以方便的在eclipse中查看class文件的源代码。
- 从官网 https://sourceforge.net/projects/jadclipse/ 下载 jadClipse 的 jar 包到 eclipse 根目录下的
dropins
目录中(没有这个目录则新建) - 重启 eclipse 导航到
Windows
->Preferences
->Java
->jadClipse
(如果没有出现这一项,删除 eclipse 根目录下的configuration/org.eclipse.update
文件夹后重启 eclipse) - 在
Path to decompiler
中输入下载的 jad 的路径,如D:\dev\jad158g.win\jad.exe
- 导航到
Windows
->Perference
->General
->Editors
->File Associations
将*.class
和*.class without source
默认编辑器都设置为JadClipse Class File Viewer
- 然后就可以直接打开 .class 文件进行查看了
JD-GUI
JD-GUI是用C++开发的Java反编译器,它由PavelKouznetsov开发,支持三个平台:Windows、Linux和Apple MacOS。
它在Eclipse平台下提供插件JD-Eclipse,JD-GUI不需要安装,直接单击运行,您可以对JAR、类文件进行反编译。
JD分为JD-GUI、JD-Eclipse/JD-Intellij两种运行方式,JD-GUI是以单独的程序的方式运行,JD-Eclipse/JD-Intellji则是以一个Eclipse/IDEA插件的方式运行。
官网:https://github.com/java-decompiler
使用非常方便,下载后将类文件或者 jar 包直接拖动到界面即可,如下图所示:
Luyten
Luyten是一款很强大的反编译工具包,是一款github的开源工具,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。
比较精准的一个java反编译工具,笔者有时候用jd-gui反编译不出来的class用luyten都可以反编译出来。
工具软件下载路径:https://github.com/deathmarine/Luyten/releases/tag/v0.5.3
直接在页面打开目标.class或者.jar包文件,即可直观的查看反编译后的源码,很强大,如下图所示:
CFR
CFR是一款功能强大的反编译工具,可以反编译类的注解,jd-gui无法反编译的 ,CFR却游刃有余。
1. 下载地址: 推荐官网: http://www.benf.org/other/cfr/
2. 反编译jar包方法:
把cfr工具比如cfr-0.150.jar和要反编译的jar比如: test.jar放在一起
java -jar cfr-0.150.jar test.jar –outputdir ./
运行命令就可以把反编译后的test.jar代码保存到当前路径下。
arthas 反编译
如果我们想通过反编译查看服务器上运行的代码是不是正确地,该怎么办呢?有一个更好的工具:arthas。
是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。
Github: https://github.com/alibaba/arthas
文档:https://arthas.aliyun.com/doc/
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》