编辑
2022-11-04
技术
00
请注意,本文编写于 748 天前,最后修改于 747 天前,其中某些信息可能已经过时。

目录

环境
解包
逆向.class文件
替换
重新打包

最近维护几个老旧的服务(shi山),并且源代码已经莫得了,只有生产环境的几个jar包,但是要对里面的一些配置进行一些更改,因此尝试做了一下简单的jar解包

环境

MacOS && Linux均可

解包

使用指令

bash
tar -zxvf <jar-name>.jar -C <Dir>

参数说明: jar-name: 需要解包的目标jar Dir:解包到对应的文件夹下,如果想要解包到当前目录下,则不需要加-C,像这样

bash
tar -zxvf <jar-name>.jar

逆向.class文件

解包后的目录大概是这样的:

截屏2022-11-04 20.05.36.png .class文件都在BOOT-INF下

截屏2022-11-04 20.06.44.png lib文件夹是程序依赖的lib库 classes文件夹就是包括了所有的.class文件 .class文件是Java的二进制支持文件,所以我们需要进行逆向还原出Java源文件 办法很简单,直接使用IDEA打开该目录,IDEA内置.class文件自动逆向还原,只可惜权限是read only 像这样: image.png

image.png 这样的话就可以查看到逆向后的.class文件源码了(甚至是kt代码)

替换

如果需要修改的文件或者配置,直接cv逆向后的文件代码(虽然它是read only,但是可以复制),复制到任意一个Java文件中,然后用java -c 进行编译打包为.class文件,然后把原来BOOT-INF下的对应.class文件直接进行替换即可

重新打包

替换完成后需要重新把这些文件打包回jar包,使用下面的指令(在解包目录下):

shell
jar -cvf0m <jar-name>.jar ./META-INF/MANIFEST.MF .

指定打包后的jar-name,然后运行指令,就会在当前目录下生成重新打包后的jar文件 到此我们的jar逆向解包、更新文件、重新打包就完成了

本文作者:伞菌

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!