需要先反编译一下,反编译其实是不能用它里面自带的那个 class2java.py
我这里的建议是自己先用 jd-gui 反编译,然后保存一下,但是如果你的 jar 包特别多,也会生成很多的 zip,这里写一个脚本提取一下
import os
import sys
import zipfile
def unzip_jars_in_directory(base_directory, extract_to_directory):
# 检查目录是否存在
if not os.path.exists(base_directory):
print(f"指定的基础目录不存在: {base_directory}")
return
# 检查目标解压缩目录是否存在,如果不存在则创建
if not os.path.exists(extract_to_directory):
os.makedirs(extract_to_directory)
# 获取目录中的所有文件
files = [f for f in os.listdir(base_directory) if os.path.isfile(os.path.join(base_directory, f))]
for file in files:
if file.endswith(".zip"):
jar_file = os.path.join(base_directory, file)
extract_dir = os.path.join(extract_to_directory, file[:-4]) # 去掉文件扩展名
# 检查目录是否已存在,如果存在则跳过
if os.path.exists(extract_dir):
print(f"目录已存在,跳过: {extract_dir}")
continue
# 创建目录并解压缩JAR包
os.makedirs(extract_dir)
print(f"正在解压缩: {file} 到 {extract_dir}")
with zipfile.ZipFile(jar_file, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
print("解压缩完成")
if __name__ == "__main__":
# 检查命令行参数
if len(sys.argv) != 3:
print("用法: python script.py <基础目录> <解压缩目标目录>")
sys.exit(1)
base_directory = sys.argv[1]
extract_to_directory = sys.argv[2]
unzip_jars_in_directory(base_directory, extract_to_directory)
两个参数,一个是要批量解压缩的目录,另外一个是要保存的目录。
接着反编译结束之后就可以直接用 extractor-java 了,用法,如果你是批量的话
python3 run.py ql /home/ubuntu/Desktop/tools/extractor-java/lib/source -ld /home/ubuntu/Desktop/tools/extractor-java/lib/source
换了 wsl 的
python3 run.py ql /root/tools/extractor-java/lib/source -ld /root/tools/extractor-java/lib/source
使用Python脚本批量解压缩和反编译jar文件
本文介绍了一个Python脚本,用于在给定目录下批量解压缩jar文件,并提供了解压缩后的文件处理方法,如后续的反编译操作。脚本接受两个参数,一个是待解压缩的jar包目录,另一个是解压后文件保存的位置。
1298





