extractor-java 用法备忘录

本文介绍了一个Python脚本,用于在给定目录下批量解压缩jar文件,并提供了解压缩后的文件处理方法,如后续的反编译操作。脚本接受两个参数,一个是待解压缩的jar包目录,另一个是解压后文件保存的位置。
摘要由CSDN通过智能技术生成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值