在Java项目中如何反编译class文件及批量反编译?

一曲冷凌霜 提交于 2019-12-02 02:24:58

前言:

           反编译是一个对目标文件可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。今天介绍几款反编译的工具,以及如何更快的批量反编译。

介绍:

       市面上免费的工具一大堆,这里就简单的介绍博主认为常用的反编译工具,例如(jd-guiluytenProcyon-Decompiler 等等)。

     《JD-GUI》是一款反编译软件,JD分为JD-GUI、JD-Eclipse两种运行方式,JD-GUI是以单独的程序的方式运行,而且提供了Eclipse平台下的插件JD-Eclipse、IntelliJ的插件JD-IntelliJ。JD-GUI不需要安装,直接点击运行,可以反编译jar,class文件。是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果三个平台。

官网地址:http://jd.benow.ca/

    《Luyten》是一款很强大的反编译工具包,LuytenProcyon的GUI是一款Github的开源工具,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化,软件支持*.JAR、*.zip、*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入、类型、合成组件等等。

  《Procyon-Decompiler》支持JDK1.8类的反编译,在很多方面做得非常不错:字符串的Switch、枚举声明方面、注解方面、匿名类、内部类、Java8新接口规范、Java8 Lambda表达式、Java8 方法传递等。
    (1):java -jar procyon-decompiler-0.5.30.jar 需要反编译的class文件 -o 保存文件名
    (2):./start  $1                       $2
        ./start 反编译的jar或者.class文件 基于当前路径的生成文件目录(不填默认是/tempDistDir)
        eg:   ./start a.jar temp
                ./start a.class temp
                ./start a.class

地址:https://download.csdn.net/download/qq496013218/10746446

    《jad》解压后放到%JAVA_HOME%/bin目录下即可,通过命令去执行反编译。

      例如:将需要反编译的多个文件放在指定路径下,例如(当前分布式项目都包含多个modules)。为了方便操作,我将文件放在D盘根目录下的classes文件夹中。打开运行--->输入cmd--->输入D:,将路径指到D盘根路径下。

地址:https://varaneckas.com/jad/

   输入编译命令,命令:jad -o -r -s java -d src classes/**/*.class 

   src文件夹里面都是反编译后的java源文件。

   jad命令的参数含义如下:
       -o:覆盖旧文件,而且不用提示确认。
       -r:重新加载生成包结构。
       -s (java):定义输出文件的扩展名。jad为默认扩展名,我们反编译后当然是要.java源文件了。
       -d:输出文件的目录。src表示反编译后的所有文件都放在src目录下。
       classes/**/*.class:classes是需要反编译的文件夹的名字,整个表示classes目录下的所有class文件。也可以写成这样**/*.class,这表示当前目录及其子目录下所有的class文件(包含所有的子目录)。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!