import marshal
import dis
import sys
def analyze_pyc(filepath):
with open(filepath, 'rb') as f:
header = f.read(16) # 讀取並跳過 16-byte header
try:
code_obj = marshal.load(f) # 核心:讀取 Marshal 序列化後的 Code Object
print(f"--- 檔案結構解析成功 ---")
print(f"變數名稱 (co_names): {code_obj.co_names}")
print(f"常數內容 (co_consts): {code_obj.co_consts}")
print(f"--- 字節碼反彙編 (Bytecode Disassembly) ---")
dis.dis(code_obj)
except Exception as e:
print(f"解析失敗: {e}")
analyze_pyc(sys.argv[1])