Java反编译工具详解(4款主流反编译工具)

Java反编译工具详解(4款主流反编译工具)-mikechen

什么是Java反编译

Java反编译是一个对Java目标可执行程序进行逆向分析,从而得到原始代码的过程。

举一个例子,比如将 Java 源代码编译成 .class 字节码文件,那么把字节码文件转换成Java代码的过程就叫“反编译”。

Java反编译工具详解(4款主流反编译工具)-mikechen

知道了什么是Java反编译,那市面上有哪些主流Java反编译工具呢?mikechen接下来给大家详解四款。

 

Java反编译Jadclipse

Java反编译工具详解(4款主流反编译工具)-mikechen

JAD 是一款老牌的、经典的、使用起来简单的 Java 反编译工具,和eclipse的插件JadClipse,二者结合可以方便的在eclipse中查看class文件的源代码。

  1. 从官网 https://sourceforge.net/projects/jadclipse/ 下载 jadClipse 的 jar 包到 eclipse 根目录下的 dropins 目录中(没有这个目录则新建)
  2. 重启 eclipse 导航到 Windows -> Preferences -> Java -> jadClipse (如果没有出现这一项,删除 eclipse 根目录下的 configuration/org.eclipse.update 文件夹后重启 eclipse)
  3. Path to decompiler 中输入下载的 jad 的路径,如 D:\dev\jad158g.win\jad.exe
  4. 导航到 Windows -> Perference -> General -> Editors -> File Associations*.class*.class without source 默认编辑器都设置为 JadClipse Class File Viewer
  5. 然后就可以直接打开 .class 文件进行查看了

Java反编译工具详解(4款主流反编译工具)-mikechen

 

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 包直接拖动到界面即可,如下图所示:
Java反编译工具详解(4款主流反编译工具)-mikechen

 

Luyten

Luyten是一款很强大的反编译工具包,是一款github的开源工具,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。

比较精准的一个java反编译工具,笔者有时候用jd-gui反编译不出来的class用luyten都可以反编译出来。

工具软件下载路径:https://github.com/deathmarine/Luyten/releases/tag/v0.5.3

直接在页面打开目标.class或者.jar包文件,即可直观的查看反编译后的源码,很强大,如下图所示:

Java反编译工具详解(4款主流反编译工具)-mikechen

 

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代码保存到当前路径下。

Java反编译工具详解(4款主流反编译工具)-mikechen

 

arthas 反编译

如果我们想通过反编译查看服务器上运行的代码是不是正确地,该怎么办呢?有一个更好的工具:arthas。

是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。

Java反编译工具详解(4款主流反编译工具)-mikechen

Github: https://github.com/alibaba/arthas
文档:https://arthas.aliyun.com/doc/

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法