當你還在 pip install 的時候,真正的資安高手已經在讀 opcode 了——組合語言復興不是復古,是必然
台灣資安圈正在經歷一場安靜的「反高階語言」運動。頂尖逆向工程師與漏洞研究員紛紛回頭深耕組合語言,不是因為懷舊,而是因為 Python 抽象層太厚,根本摸不到攻擊面的底層真相。這篇文章從指令集架構、記憶體佈局到 CPU 微架構側通道,拆解為什麼「往下挖」才是資安的終極武器。
上個月在台北某場閉門資安研討會上,一位圈內知名的漏洞獵人跟我說了一句讓我愣住的話:「我面試新人,第一題不是叫他寫 Python exploit,是叫他看一段 x86-64 disassembly,告訴我哪一行會 crash。」
答不出來的,直接淘汰。連第二題都沒有。
這聽起來很極端對吧?但你去問問看台灣幾個打進 DEF CON CTF 決賽的隊伍,問問看那些真正在挖 zero-day 的人,他們每天花最多時間盯著的畫面是什麼——不是 VS Code 裡面的 Python 腳本,是 IDA Pro 或 Ghidra 裡一行一行的組合語言。
Python 不是問題,「只會 Python」才是問題
我先把話說清楚,免得被斷章取義:Python 是好工具。寫 PoC、做自動化掃描、串 API、跑資料分析,它快、它方便、生態系龐大。我自己教課也用 Python 示範概念。
但這裡有個致命的認知陷阱。
太多人把「會用 Python 套件做資安」等同於「懂資安」。你用 pwntools 打一個 CTF 題目,套件幫你處理了 socket 連線、payload 編碼、ROP chain 生成——很好,你拿到 flag 了。但你真的知道那個 buffer overflow 在記憶體裡長什麼樣子嗎?你知道 stack frame 怎麼被破壞的嗎?你知道為什麼 NX bit 開了之後你的 shellcode 會 segfault 嗎?
說白了,Python 讓你在抽象層第五樓操作,但真正的戰場在地下室。
組合語言是「看見」的能力
這件事得從計算機架構的第一原理講起。
現代 CPU——不管是 Intel 的 Alder Lake 還是 Apple 的 M4——在微架構層面做了極度複雜的事情:亂序執行(out-of-order execution)、分支預測(branch prediction)、推測執行(speculative execution)、多層快取階層。Spectre 和 Meltdown 這兩個撼動整個產業的漏洞,本質上就是 CPU 微架構的側通道洩漏。
你用 Python 寫不出 Spectre 的 PoC。不是因為 Python 語法不夠強,是因為你需要精準控制「哪一個 cache line 被載入」、「哪一個分支被推測執行」。這種粒度的操作,只有在組合語言(或極度接近硬體的 C)層級才做得到。
台灣資安圈那些厲害的人,他們不是「回頭擁抱」組合語言——他們根本從來沒離開過。只是外面的世界被 Python 的便利性迷住了太久,現在潮水退了,才發現誰一直站在岩石上。
逆向工程:沒有組合語言你什麼都看不到
我舉個實際的例子。2025 年底台灣某關鍵基礎設施被攻擊事件(細節不便透露),事後分析那個惡意程式用了大量的反偵測技術:動態 API resolution(在 runtime 才解析 Windows API 位址)、control flow flattening(把程式的控制流打亂成一堆 switch-case)、還有直接用 syscall 指令繞過 ntdll.dll 的 hook。
分析這種東西,你開 Python 做什麼?你需要的是看懂 mov eax, 0x25; syscall 代表 NtCreateFile,你需要理解 PE 的 TLS callback 怎麼在 entry point 之前就開始執行,你需要追蹤暫存器在每一步的狀態變化。
這就是組合語言的不可取代性——它不是一種「程式語言」,它是一種「觀察工具」。就像顯微鏡之於生物學家,你不用顯微鏡「做實驗」,但沒有顯微鏡你根本看不到實驗的結果。
真正的問題:教育的斷層
坦白講,我對台灣目前資安教育的方向有很大的擔憂。
太多課程、太多 bootcamp 在教「如何用工具」而不是「工具背後的原理」。會跑 Nmap、會用 Burp Suite、會寫 Python 自動化腳本——這些是基本功沒錯,但如果止步於此,你訓練出來的不是資安工程師,是「資安操作員」。(沒有貶低的意思,但這兩者的薪資天花板和能處理問題的等級差距非常大。)
真正需要的訓練路徑長這樣:計算機組織 → 作業系統核心概念 → C 語言指標與記憶體管理 → 組合語言與指令集架構 → 然後,才是 Python 和各種高階工具。
順序不能反過來。你讓一個沒學過微積分的人去讀機器學習論文,他可能看得懂英文字,但他讀不懂數學。同樣的道理。
但我是不是太極端了?
也許吧。畢竟現實世界裡,90% 的資安工作——合規稽核、日誌分析、事件回應的初步處理——確實不需要你會讀組合語言。Python 加上一堆成熟工具,足以應付大部分日常。
我不否認這點。
但如果你的目標是成為「頂尖」——能挖 zero-day 的、能做高階鑑識分析的、能拆解國家級 APT 攻擊的那種——那麼組合語言不是選修,是必修。沒有「等我以後再學」這回事,因為到了那個等級,每一個你看不懂的 opcode 都可能是你漏掉的攻擊向量。
我常跟學生講一句話:Python 讓你跑得快,組合語言讓你看得清。跑得快但方向錯了,只是更快地跑進死胡同。
所以,學 Python 是在浪費生命嗎?當然不是。但如果你「只」學 Python 就以為自己懂資安——老實說,那跟拿著聽診器就說自己是外科醫生,差別沒有你想像的那麼大。
🛠️ CULTIVATE Recommended Tools | 精選工具推薦
- Codecademy: Learn Python and Data Science interactively from scratch.
Disclosure: CULTIVATE may earn a commission if you purchase through these links.