基礎知識

Assembly

編譯指令

gcc -m32 -O0 -o challenge challenge.c 
# -m32: 編譯成 32 位元程式,彙編更簡潔,適合初學者
# -O0: 關閉所有優化,程式碼結構和原始碼幾乎一對一
gcc -O2 -s -o challenge challenge.c
# -O2: 開啟大部分優化。編譯器會進行函式內聯、迴圈展開、指令重排等。
# -s: 去除符號表 (strip)。所有函式名和全域變數名都會丟失。
gcc -static -O2 -s -o challenge challenge.c
# -static: 進行靜態連結

工具

IDA
GDB

Write-Ups