概述
jar包的解压
有两种方式,使用jar命令或者unzip命令
由于jar命令不能将输出重定向到指定的文件夹,故选择unzip命令
使用jar来解压的命令只能将解压后的数据解压到当前文件夹1
2
3
4
5jar -xvf dcm-stats-service-impl.jar
# 1. -x 解压
# 2. -v 打印解压过程
# 3. -f jar包名
1 | unzip -qo dcm-stats-service-impl.jar -d classes |
jad反编译
对多个java字节码文件进行反编译1
2
3
4
5
6
7jad -o -r -sjava -dsrc 'classes/com/**/*.class' > /dev/null 2>&1
# 1. -o 覆盖文件
# 2. -r 保存包目录的结构
# 3. -s 指定输出文件的后缀名
# 4. -d 指定输出文件目录
# 5. > /dev/null 2>&1 将输出信息(标准输出,标准错误)都输出到/dev/null(空设备文件),即不显示输出信息
自定义反编译工具-编写shell文件
文件名为decompile
1 | ! /bin/bash |
为decompile添加执行权限chmod u+x decompile
将decompile复制到系统环境变量能访问的地方eg:/usr/local/bin/, cp decompile /usr/local/bin/
使用
使用type命令查看decomile1
2➜ jar type decompile
decompile is /usr/local/bin/decompile
使用decompile命令将jar包反编译到当前目录下的src文件夹中1
2
3
4
5
6
7
8➜ too decompile ../dcm-stats-service-impl.jar
1. unzip ../dcm-stats-service-impl.jar to classes
2. jad all classes
3. delete all classes
decompile successful
➜ too ll
total 0
drwxr-xr-x 3 tuyu staff 102 Sep 14 11:47 src
参考链接
Linux Shell 1>/dev/null 2>&1 含义
JAD参数
bash shell 获取当前正在执行脚本的绝对路径
我使用过的Linux命令之exit - 退出当前shell
Java - 解压和打包Jar
将.jar文件解压到指定目录?
使用jad反编译整个jar包