六個月前,心臟影像研究項目。專利申請在推進,軟件著作權(quán)材料交了一半,律師真的會看提交記錄的那種。團隊需要把算法模塊打包成二進制交給外部合作方,源碼不可讀。Python,當然,現(xiàn)在所有研究項目都是Python。
搜了一圈,PyArmor是標準答案。裝完跑測試、過構(gòu)建流水線、發(fā)二進制。順利了兩周,直到合作方的第一個生產(chǎn)環(huán)境崩潰日志傳回來。我習慣性地貼進Claude Code:
![]()
Traceback (most recent call last):
File "dist/algorithms/preprocess.py", line 23, in
AttributeError: 'I0' object has no attribute 'I2'
Claude的回復很禮貌:"我不知道I0或I2指什么。能分享源碼嗎?"
那一刻我愣住了。花了兩周刻意隱藏的源碼,現(xiàn)在成了AI助手向我索要的文件。混淆器橫在寫代碼的助手和調(diào)試代碼的助手之間,真正受益的只有攻擊者。
手動對照原始源碼解映射,花了40分鐘。Bug很簡單:缺了個import。然后我去調(diào)研了市面上的工具。PyArmor的保護模型是單向設計,Cython直接編譯到機器碼,更深。兩者都無法在不重建工具的前提下解決。
于是我重建了。一個月的夜晚,用Claude Code本身vibe-coding,核心權(quán)衡只有一個:混淆輸出對外部保持不透明,只留一份極小的映射文件給我自己可讀。這就是2026年4月22日發(fā)布的pyobfus 0.4.0。
回溯歷史:PyArmor誕生于2013年,Cython更老,Oxyry約2017年出現(xiàn)。它們的設計前提一致:你寫代碼、混淆、發(fā)布,然后你自己讀生產(chǎn)日志。
這套邏輯跑了十年。混淆側(cè)的摩擦對攻擊者是障礙(好),自己調(diào)試時付點人體工學稅(可接受,公平交易)。
交易崩盤的年份,是LLM接手調(diào)試席位的年份。模型能并排閱讀堆棧跟蹤和源碼(它們擅長這個),但名字必須對齊。跟蹤說I0,源碼仍是UserService,模型沒有錨點。(就是上面那個"禮貌陌生人"問題。)
這曾是免費、隱形的成本。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.