import os
import subprocess
# 配置區
pyc_dir = r"pycdir" # .pyc 文件所在目錄
output_dir = r"outpuydempile" # 輸出目錄
pycdc_path = r"pycdc.exe" # pycdc 可執行文件路徑
# 創建輸出目錄
os.makedirs(output_dir, exist_ok=True)
# 遍歷 .pyc 文件
for root, dirs, files in os.walk(pyc_dir):
for file in files:
if file.endswith(".pyc"):
pyc_path = os.path.join(root, file)
# 構造輸出路徑,保持目錄結構
rel_path = os.path.relpath(root, pyc_dir)
out_folder = os.path.join(output_dir, rel_path)
os.makedirs(out_folder, exist_ok=True)
py_file_path = os.path.join(out_folder, file.replace(".pyc", ".py"))
# 調用 pycdc 反編譯
try:
subprocess.run([pycdc_path, pyc_path], stdout=open(py_file_path, "w", encoding="utf-8"), check=True)
print(f"[+] 反編譯成功: {pyc_path} -> {py_file_path}")
except Exception as e:
print(f"[-] 反編譯失敗: {pyc_path}, 錯誤: {e}")
print("[?] 批量反編譯完成")