java根据jar包反编译后修改再打包回jar的做法

当java文件之间没有依赖关系时:

1. 得到一个待要修改的jar包

2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件

3. 我首先是使用jd-gui工具看一下这个class文件,然后复制出来,粘贴到一个java文件中,然后对这个文件按你需要的方式进行编辑

4. cmd命令调出终端,使用javac 修改后的java文件路径  ---》 重新得出class文件

5. 再次使用jar cvf test.jar a             test.jar是生成的jar   a是文件夹名字,他里面还有一个b文件夹,完整的目录结构是a/b/example.class     我这个命令的目的是把a.b作为包名打进去jar里面

6. 好了,大功告成咯

当有依赖关系是java的编译是不通过的,所以要借助工具:

在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供具体的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很具体,这对我们使用就非常不方便。
  有道是,知其然才知其所以然。有时候,我们必须读取jar里的打包的类。而有时还有可能要对它进行小量修改,使之适用于自己的非凡需求。

前期预备
  Java反编译工具:
  强烈推荐,小颖JAVA源代码反编译系列专家1.4终极版。
  压缩工具:
  Winrar

开始
  1. 将jar包解压
  我们可以使用winrar工具将jar解压到指定目录

  2. 反编译class
  使用 Java 反编译工具,将class文件反编译为java文件。(大多数反编译工具只提供单个class文件的反编译,这里推荐"小颖JAVA源代码反编译"工具,可以反编译一个目录下的所有class文件)

  3. 构建项目
  我们将反编译后的java文件设为项目的源文件目录。
  将jar,及jar所需要的其它lib,作为libraries加入项目中,这样可以保证我们的java文件可以编译。

  4. 对反编译的java进行修改
  通过反编译的java文件,可能还有错误,不能编译通过,在不影响作者原始意图的前提下,我们必须对它进行小量修改,保证可编译通过。

  保证java文件可以编译通过后,我们再在其基础上进行修改,使之符合自己的需求。

  5. 编译修改的java
  编译修改后的java文件,注重的是,最好只编译修改的单个java文件。
  编译完成后,我们进行测试,保证修改无误。因为JVM会先找寻classes目录下的class文件,并率先加入,这样我们修改编译后的class文件,便是测试时使用的class文件。
  重复这个过程,直至java达到我们的目的。

  6. Jar打包
  将修改生成后的class文件,替换我们将jar解压缩目录下的相应class文件,重新打包生成jar。
  也可以使用Winrar把之前的jar打开,再把改好的class文件拖到里面对应的位置,替换之前的class文件。(我建议使用后者)。

  大功告成!

总结
  由于Java的跨平台性,使得java的class文件可以进行反编译,我们可以对jar文件进行修改,使之适用于自己的需求。
  对jar文件进行修改,我们必须首先获得jar开发者的同意。

  对jar文件进行修改,首先必须对反编译的java文件比较熟悉。这就必须有良好的代码阅读能力,清楚作者的技术架构和开发设计思想。假如没有把握,最好能与jar开发者联系,提出你的需求。

  对于某些java开发者来说,并不希望将自己辛辛劳苦写的code公布于众,为了避免他人反编译,可以使用混淆器,但也只是增加代码阅读的困难性。假如不是作为商业运用,我们还是希望开发者能够提供源代码,互相学习探讨。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jar反编译是指将一个已经编译好的jar文件中的字节码文件反向转换为可读的Java源代码文件的过程。这个过程可以帮助开发者理解和修改原始的Java程序。而重新打包则是指在进行了反编译后,将修改过的Java源代码文件重新编译为字节码文件,并将其重新打包成一个新的jar文件。 在进行jar反编译后,我们可以使用各种反编译工具来查看和编辑反编译后生成的Java源代码文件。通过修改源代码文件,我们可以对原始的Java程序进行定制化的更改和优化。修改完成后,我们需要再次将修改后的源代码文件编译为字节码文件。 在重新打包的过程中,我们需要使用Java编译器将修改后的Java源代码文件编译为二进制的字节码文件。在编译过程中,编译器会检查源代码的语法错误,并将其转换为可执行的字节码。一旦编译成功,我们就可以将这些字节码文件和相关的资源文件(如果有的话)一起打包成一个新的jar文件。 重新打包后的jar文件可以被再次部署和使用。它包含了修改后的功能和特性,可以被其他开发者直接使用或者被业务环境部署运行。重新打包后的jar文件可以替代原始的jar文件,以实现我们对Java程序的改进和定制化。 总而言之,jar反编译后重新打包是一种重塑和定制Java程序的方式。通过反编译和重新打包,我们可以修改原始的Java程序并生成一个全新的jar文件,使得程序具备了我们所期望的特性和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值