java 反编译之修改源代码(包括了jar包和war包的修改方式)

需求

这两天公司有一个需求就是有一个来自于别人的项目,只有tomcat下部署的war包和一个配合程序使用的jar包,额。。。。于是狼来了(问题来了。。呵呵),我需要将class文件反编译成java文件,这样一看,很简单啊,找个编译软件不就行了,但是等等,真正难点如下:

  • 批量编译时大多数文件或者内容可能都相对准确,但是有些内容不一定是对的,比如:我这边有一个类传入的参数是枚举类型,但是编译后。。。呵呵,成了整形的一个数值。
  • 为了降低出错率,我选择了只反编译自己要修改的类,额。。。但是又出问题了,每个类之间相互是有引用的,这导致了类与类之间的相互依赖,如果我使用javac进行单文件编译,然后。。。然后就报错了。。。。因为当你单个文件进行编译时找不到这个java文件被引用的类
  • 这个还好解决,我创建了一个项目,在项目中引入了原先的jar 包项目,并创建了与该类相同的包路径,将该类放在该路径下,然后进行编译就会发现编译成功。可以具体操作可以查看这个链接https://blog.csdn.net/tomcat_zhu/article/details/79240011
  • 但是,在tomcat下面有个web 项目仍需要进行反编译并进行修改,由于war包部署的项目并不像jar包项目可以直接将项目引入,这样又回到了原点,要修改的java文件无法找到引入的类,怎么办呢,经过本人不断跋山涉水,历尽艰辛的查找,终于想到一个办法,就是将所有的war包项目下的class文件通过命令打成jar包后再进行引入,发现编译成功。

解决方式

首先必须下载相关的反编译软件,可以使用jda,jdax,Luyten等等,如下所示:

个人测试过,建议使用Luyten这个软件反编译的准确率相对较高一些,但是如果是中文显示的是:Unicode编码格式的字符串。而,jad,jadx可以完全编译中文内容。


第二步:解压jar包,并获取要修改的class文件,由于比较简单我就不多说了


第三步:创建maven项目工程,并将获取到的文件放入项目中。这里要注意一个地方,如果直接将文件放入项目会是这个样子

 

而且也会出现以下报错:

所以要创建相同的包路径,或者修改包路径,正确的应该是这个样子:


第四步:引入jar包

如果你的项目是jar包项目可以在Eclipse中直接: 右键项目 —— Build Path —— Add External Archives... 将原项目导入到创建的项目中。

如果是war包方式,则可以将xxx.war文件后缀修改为xxx.zip进行解压,如果是已经部署在tomcat则需要找到所有的java文件,并将该文件打包成jar包,注意:只需要java文件,而且一定要注意包的路径,打包方式请查看:https://blog.csdn.net/qq_40929531/article/details/99310180  当打包完成后按照下方步骤将jar包引入项目中

 


第五步:修改代码并且将项目重新打包成jar包或者war包,通过解压jar包或war获取class文件,并替换原来项目中的class文件。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将一个Java的jar(Java Archive)文件反编译源代码可以通过各种反编译工具轻松实现,这些工具可以将jar包中的class文件反编译Java源代码。这是一种实用的技术,因为有时我们需要查看一些已编译的代码而没有源代码,或者需要深入了解某个jar包的实现细节。 使用反编译工具反编译jar包的过程相对较简单,首先需要确定要反编译jar包,然后找到一个合适的反编译工具。常用的反编译工具包括JD-GUI和JAD,这两个工具都是免费和开源的。 然后,将jar包添加到反编译工具中,工具会将jar包的class文件加载在其界面中。接着,我们可以一一选择class文件,并通过“保存源代码”选项将每个class文件转换成Java源代码。这个过程需要一些时间,具体取决于jar包的大小和其中的class文件数量。 当反编译完成后,我们就可以查看源代码并进一步了解软件的实现细节。但需要注意的是,反编译并不一定能够提供完整的源代码,因为有些源代码可能已经被混淆(即将变量名称等信息编码为无意义字符)。在这种情况下,我们需要使用其他技术来解密和还原源代码。 总之,将jar包反编译源代码是一种常用的技术,可以用于深入了解软件实现细节和查看已编译的代码。但需要注意的是,反编译不一定能够提供完整的源代码,因为有些信息可能已经被混淆或删除。 ### 回答2: Jar包Java语言中常用的一种打格式,可以将一些相关的类文件打成一个整体。很多时候,我们需要查看一些jar包中的源代码,可以通过反编译方式来实现。 反编译是将编译后的二进制代码转化为人能够理解的高级语言代码的过程。针对jar包反编译工具有很多,比较常用的有JD-GUI、JAD和Procyon等。 其中,JD-GUI是一款比较优秀的反编译工具,它不仅具备反编译的基本功能,还能够提供图形化的用户界面,便于操作。其使用步骤如下: 1.下载并安装JD-GUI工具。 2.打开JD-GUI工具,选择“File”菜单中的“Open File”选项。 3.在弹出的对话框中选择要反编译jar包文件,点击“Open”按钮。 4.等待JD-GUI工具完成反编译操作,反编译结果将以树形目录的形式展现在左侧窗口中。 5.选择需要查看的类文件,双击打开即可查看反编译后的源代码。 需要注意的是,尽管反编译能够还原代码的基本结构,但是由于Java编译器的优化操作,反编译后的源代码可能存在一些细微的变化。因此,在使用反编译工具时,应该谨慎地分析反编译后的代码,并结合实际情况做出相应的处理。 总之,反编译是一种非常有用的工具,在理解或修改他人代码时能够提供很大的帮助。但同时,我们也应该遵守相关法律法规,不得将反编译后的代码用于商业用途或其他违法活动。 ### 回答3: jar包反编译源代码是指将Java程序打成jar文件后,通过工具将其反编译成可读的源代码文件。在开发过程中,经常会遇到需要查看或修改一些已经编译成jar包的工具类或库文件的情况,这时候就需要将这些jar包反编译源代码了。 反编译jar包的过程需要使用专门的反编译工具,比较常用的有JD-GUI、Jad和Procyon等。这些工具使用起来十分简单,只需要将要反编译jar包拖入工具界面中即可。反编译完成后,我们可以在工具中看到该jar包中的所有类文件以及对应的代码。 然而,需要注意的是反编译出来的源代码并不一定和原始代码完全一致。由于Java语言中存在许多高级特性和编译器优化,所以反编译后的代码可能会出现一些不同之处,如变量名改变、去除注释等。此外,反编译是一项涉及版权和知识产权的行为,在某些情况下可能会侵犯他人的权益,在使用过程中需要注意相关法律规定。 总之,jar包反编译源代码是一个十分实用的技术,它可以让我们更方便地处理Java程序中的各种工具类和库文件。不过在操作时需要注意隐私和版权等方面的问题,遵守相关法律法规。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值