反编译jar包

问题描述:

前提说明:反编译别人的程序,是不推荐的,毕竟不太好,有可能涉及保密。

有时是没有办法而为之,原程序的开发工程师离职了,新的接口人业务不了解,但是也没有办法提供源码,而部署文档又不明确,这样在部署的时候就需要看程序结构和配置了,所以需要反编译一下jar包。

工具如下:

jd-gui.exe;

luyten-0.5.4.exe;

java-decompiler.jar;

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

  • jd-gui.exe:

步骤:双击打开->File->Open File->选择要反编译的jar包->确定;

保存:File->Save All Sourses,得到一个压缩包,解压即可;

反编译后的java类中的导包,也就是import比较明确,不会用*代替多个同文件目录下的java的导入,一些中文字段也能够正确的转换,目录结构看着也比较好;

但是对于lambda表达式会有以下缺陷,有些java类也不能成功反编译。

  • luyten-0.5.4.exe

步骤:双击打开->File->Open File->选择要反编译的jar包->确定;

保存:File->Save All Sourses,得到一个压缩包,解压即可;

可以看出,反编译后的目录结构的查看效果相对较差一点,import使用了*,一些中文字段变成了ASCII码,但是它可以较好的反编译出lambda表达式。

  • java-decompiler.jar

>c:\devtools\jdk17\bin\java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true ym-wechat-1.5.2.RELEASE.jar ym

这个需要使用命令行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

————————————————

版权声明:本文为CSDN博主「沉迷学习——冲」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_41332719/article/details/115691011

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值