00-反编译 JAR包

什么是Java反编译

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

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

知道了什么是Java反编译,那市面上有哪些主流Java反编译工具呢?

Java反编译 JAD 和 Jadclipse

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 文件进行查看了

JD-GUI

JD-GUI是用C++开发的Java反编译器,它由PavelKouznetsov开发,支持三个平台:Windows、Linux和Apple MacOS。

JD分为JD-GUI、JD-Eclipse/JD-Intellij两种运行方式,JD-GUI是以单独的程序的方式运行,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包方法:

    1. 把 cfr 工具(比如 cfr-0.150.jar)和要反编译的jar(比如 test.jar)放在一起

    2. java -jar cfr-0.150.jar test.jar –outputdir ./

    3. 运行命令就可以把反编译后的test.jar代码保存到当前路径下。

arthas 反编译

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

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


00-反编译 JAR包
https://flepeng.github.io/021-Java-91-编译反编译-00-反编译-JAR包/
作者
Lepeng
发布于
2023年5月14日
许可协议