需要先反编译一下,反编译其实是不能用它里面自带的那个 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