反编译jar包

问题描述:
前提说明:反编译别人的程序,是不推荐的,毕竟不太好,有可能涉及保密。
有时是没有办法而为之,原程序的开发工程师离职了,新的接口人业务不了解,但是也没有办法提供源码,而部署文档又不明确,这样在部署的时候就需要看程序结构和配置了,所以需要反编译一下jar包。

工具如下:

  1. jd-gui.exe;
  2. luyten-0.5.4.exe;
  3. java-decompiler.jar;

我知道的有以上三个工具,比较推荐的是第三个,IntelliJ自带的反编译工具,反编译效果比较好,但其他的也有自己的优点。

  1. jd-gui.exe:
    步骤:双击打开->File->Open File->选择要反编译的jar包->确定;
    保存:File->Save All Sourses,得到一个压缩包,解压即可;
    反编译jar包_第1张图片
    反编译后的java类中的导包,也就是import比较明确,不会用*代替多个同文件目录下的java的导入,一些中文字段也能够正确的转换,目录结构看着也比较好;
    但是对于lambda表达式会有以下缺陷,有些java类也不能成功反编译。
    在这里插入图片描述
  2. luyten-0.5.4.exe
    步骤:双击打开->File->Open File->选择要反编译的jar包->确定;
    保存:File->Save All Sourses,得到一个压缩包,解压即可;
    反编译jar包_第2张图片
    可以看出,反编译后的目录结构的查看效果相对较差一点,import使用了*,一些中文字段变成了ASCII码,但是它可以较好的反编译出lambda表达式。
  3. java-decompiler.jar
    这个需要使用命令行cmd进行操作,
    步骤:将java-decompiler.jar放在需要解压的jar包目录下->新建一个文件夹(用于存放反编译后的压缩包)->该目录下打开cmd.exe->输入
    java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true xxx.jar xxx
    保存:运行命令后会在xxx文件夹下面生成一个与原先的jar包同名的文件,加压缩即可;
    说明:
    (1)xxx.jar是需要反编译的jar包的全名
    (2)xxx是新建的文件夹的全名
    (3)如果 java-decompiler.jar与jar包不在同一目录下,则需要 java-decompiler.jar指定路径,比如将上面的java-decompiler.jar改成 “D:\IntelliJ\plugins\java-decompiler\lib\java-decompiler.jar”
    反编译效果比较好,可以综合一下以上两个软件的优点,但也有不足,@Override注解没有,需要自己添加,其余的需要结合使用情况了。

反编译后:
在这里插入图片描述
java文件和配置文件在\BOOT-INF\classes目录下;
pom.xml文件在\META-INF\maven\com.xxx\xxx目录下;
mapper文件的位置有所变动,需要自己调整一下;
反编译的效果肯定不如源码,还要结合具体的逻辑进行调整,另外代码里面如果使用@Data注解,反编译后会附带的一些重写方法,直接删掉即可,比如:

@Override
public boolean equals(final Object o) {}

工具下载:
提取链接链接:https://pan.baidu.com/s/1koppf3_0EqSLW--q5rbGMQ
提取码:h5bn

你可能感兴趣的:(Back,End,反编译,jar)