问题描述:
前提:不建议反编译别人的程序。 毕竟不太好,可能涉及到保密问题。
有时却没有办法。 原程序的开发工程师辞职了。 新接口人不懂业务,但没办法提供源码,部署文档也不清楚,部署时需要看程序。 结构和配置,所以需要反编译jar包。
工具如下:
jd-gui.exe;luyten-0.5.4.exe;java-decompiler.jar;
上面三个工具我都知道,比较推荐第三个。 IntelliJ自带的反编译工具反编译效果比较好,但是其他的也各有优势。
jd-gui.exe:
步骤:双击打开->文件->打开文件->选择需要反编译的jar包->确定;
保存:File->Save All Sources,得到压缩包并解压;
反编译后的java类中的import包比较清晰反编译需要源码不,不会用*来代替同一文件目录下多个java文件的导出。 只能正确转换一些英文数组,而且目录结构看起来比较好;
但lambda表达式存在以下缺陷,部分java类无法成功反编译。
luyten-0.5.4.exe
步骤:双击打开->文件->打开文件->选择需要反编译的jar包->确定;
保存:File->Save All Sources,得到压缩包并解压;
可以看到,反编译后的目录结构的查看效果比较差。 import使用*,部分英文数组转为ASCII码,但可以很好地反编译lambda表达式。 java-反编译器.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” pluginsjava-decompiler libjava-decompiler.jar”
反编译比较有效,可以结合以上两个软件的优点,但也有缺点。 没有@Override注解,需要自己添加。 剩下的就需要结合使用了。
反编译后:
Java文件和配置文件位于BOOT-INFclasses目录下;
pom.xml文件在META-INFmavencom.xxxxxx目录下;
Mapper文件的位置发生了变化,需要自己调整;
反编译的效果肯定不如源码,必须根据具体逻辑进行调整。 另外反编译需要源码不,如果代码中使用了@Data注解,反编译后会包含一些重绘方法,可以直接删除,如:
@Override
public boolean equals(final Object o) {}
工具下载:
提取链接链接:
提取码:h5bn