最近维护几个老旧的服务(shi山),并且源代码已经莫得了,只有生产环境的几个jar包,但是要对里面的一些配置进行一些更改,因此尝试做了一下简单的jar解包
MacOS && Linux均可
使用指令
bashtar -zxvf <jar-name>.jar -C <Dir>
参数说明: jar-name: 需要解包的目标jar Dir:解包到对应的文件夹下,如果想要解包到当前目录下,则不需要加-C,像这样
bashtar -zxvf <jar-name>.jar
解包后的目录大概是这样的:
.class文件都在BOOT-INF下
lib文件夹是程序依赖的lib库 classes文件夹就是包括了所有的.class文件 .class文件是Java的二进制支持文件,所以我们需要进行逆向还原出Java源文件 办法很简单,直接使用IDEA打开该目录,IDEA内置.class文件自动逆向还原,只可惜权限是read only 像这样:
这样的话就可以查看到逆向后的.class文件源码了(甚至是kt代码)
如果需要修改的文件或者配置,直接cv逆向后的文件代码(虽然它是read only,但是可以复制),复制到任意一个Java文件中,然后用java -c 进行编译打包为.class文件,然后把原来BOOT-INF下的对应.class文件直接进行替换即可
替换完成后需要重新把这些文件打包回jar包,使用下面的指令(在解包目录下):
shelljar -cvf0m <jar-name>.jar ./META-INF/MANIFEST.MF .
指定打包后的jar-name,然后运行指令,就会在当前目录下生成重新打包后的jar文件 到此我们的jar逆向解包、更新文件、重新打包就完成了
本文作者:伞菌
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!