修改jar包中的class文件

需求及准备

需求

现在有一个.jar文件,要修改其中某个文件的代码。

准备

  • 确保JRE已安装且环境变量已配置。

  • 安装Java Decompiler。官方地址为:

    http://java-decompiler.github.io/

    选择其中的JD-GUI进行下载。

  • 安装winrar。

提取class内容并修改

打开JD-GUI,将.jar拖进来。JD-GUI会将jar包反编译为java源码。
在JD-GUI中可以看到反编译源码,但不能直接修改。找到要修改的文件,复制。
创建一个与.class同名的空白.java文件(为了后续生成.class不冲突,建议放在一个单独目录下),将复制的内容粘贴到该文件中。对其代码进行修改。

编译

打开CMD,定位到上面创建的.java所在目录下,输入:

javac xxx.java

编译后,会生成同名的.class文件。
注意此方式只能编译不依赖其他模块的.java文件。对于依赖其他模块的,需要分析并定位.class的虚拟机代码后,创建java工程引入jclasslib修改。可以参考修改jar中的class:杀戮尖塔修改教程

替换jar中class文件

替换jar中class有两种方式:

  1. 借助rar直接替换。
  2. 解压jar为文件夹,替换class后重新打包为jar。

借助winrar直接替换

使用winrar直接打开.jar文件,进入指定目录后,将刚才编译生成的class直接拖进来替换即可。

解压jar为文件夹,替换class后重新打包为jar

使用winrar将.jar文件解压为文件夹,然后替换class。
设该文件夹名称为xxx。打开CMD并定位到该文件夹所在目录下,输入:

jar cvfm xxx.jar xxx\META-INF\MANIFEST.MF -C xxx /

其含义为:使用xxx\META-INF\MANIFEST.MF作为配置文件,并调用-C切换路径为xxx文件夹下。然后打包出.jar文件。
注意-C xxx /最后的文件夹名称xxx与/之间有个空格,不可省略。

发布了215 篇原创文章 · 获赞 51 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/fyyyr/article/details/102380429