在進行逆向工程、程式分析或惡意程式研究時,僅僅依靠原始碼往往是不夠的——有時候甚至根本無法取得原始碼。
因此,我們需要從多個層面深入分析二進位檔,透過檢視其中的字串、反編譯機器碼、追蹤執行流程,甚至監控執行時的暫存器變化,全面理解程式碼。
這些工具的常見組合分析流程如下:
使用 strings 撈出檔案裡的可讀字串找線索,
再用 objdump 或 Radare2 / IDA Free 去反組譯、看結構,
最後用 GDB + GEF 在執行時追蹤其行為。
用途:從檔案(尤其是二進位檔)中列出可讀的字串(ASCII / Unicode)。
典型用途:
範例:
strings malware.exe | grep password
這可以列出檔案中所有包含 password
的字串。
用途:
顯示可執行檔或目標檔(.o)的資訊,包括反組譯結果。
使用其工具,出來的是 AT&T 語法
典型用途:
常用指令:
sudo apt install binutils 安裝
objdump --version 查看版本
objdump -M intel -d ./執行檔 查看反編譯結果(為 intel 語法)
objdump -d program # 反組譯
objdump -t program # 顯示符號表
r2 binaryfile
gdb ./program
(gdb) break main # 在 main 設斷點
(gdb) run # 執行程式
(gdb) next # 單步執行(跳過呼叫)
(gdb) stepi # 單步執行(進入呼叫)