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])