GDB (GNU Debugger)是一個用來幫助程式開發者找出程式中錯誤的工具。它可以讓你在執行程式時,暫停程式的運行,檢查程式的內部狀態,找出錯誤的地方,就像你在一個電影中按下暫停鍵一樣。你可以查看變數的值、程式的執行流程,並找到導致問題的原因。總之,GDB 是一個用來除錯程式的有用工具。
先來安裝好用的 GDB 外掛功能 PEDA
PEDA(Python Exploit Development Assistance)是一個用於加強 GDB(GNU Debugger)的工具,主要用於安全研究人員和漏洞開發者。它通過添加新的命令和功能,讓 GDB 更適用於分析和利用軟件漏洞,使得調試和研究更加便捷。 PEDA可以幫助用戶更好地查看內存、寄存器、堆棧等信息,還支持漏洞開發和自動化任務。
https://github.com/longld/peda
git clone https://github.com/longld/peda.git ~/peda
將工具從 github 抓下來,並保存在當前用戶的矚目錄下的 peda 目錄中。echo "source ~/peda/peda.py" >> ~/.gdbinit
並設定每次啟動 GDB 時,自動加載 peda.py 腳本。成功安裝後,每次啟動 GDB 後,都會友 -peda的字樣出現。如下圖:
以下示範是以 GDB 來偵錯 Bash 程式的一些基本操作,以及查看它的暫存器內容。
gdb -q /bin/bash
:這個指令告訴電腦要用 GDB 來偵錯 /bin/bash
這個程式。-q
是一個選項,表示靜默模式,它讓 GDB 在啟動時不會顯示冗長的歡迎信息。
b main
/ break main
:這是一個 GDB 斷點設置指令。b
是縮寫 ,也可以打break
,表示設置斷點。main
是希望在程式中設置中斷點的函數名稱。這個指令是告訴 GDB 在程式執行時,當它達到 main
這個部分時,要先暫停下來,讓你檢查問題。
r
/ run
:這是 GDB 開始執行程式的指令。一旦斷點被觸發,程式將會在 main
函數內部停下來,等待你的進一步指示。
info registers
:這是一個 GDB 指令,用於顯示 CPU 暫存器的內容。當程式停在斷點處時,你可以使用這個指令來檢查 CPU 暫存器的值,對於了解程式的執行狀態非常有用。