目錄
[TOC]
pwndbg環境搭建
項目位址
https://github.com/pwndbg/pwndbg
搭建過程
1、安裝環境基礎
git
python
python-pip
2、安裝過程
使用git指令克隆遠端項目到本地。
git clone https://github.com/pwndbg/pwndbg
進入項目根目錄并執行一鍵安裝腳本
cd pwndbg && ./setup.sh
該腳本主要是檢查了一下系統資訊,然後根據系統資訊自動安裝了一些所需要的工具和依賴庫包括gdb,當然有時需要通過源碼去編譯gdb。
3、配置啟用pwndbg
安裝完成後,通過編輯使用者目錄下的gdb配置檔案.gdbinit,通過該檔案可以啟用pwngdb,主要在檔案中添加的内容如下,
# 檔案路徑為所克隆的項目的路徑。
source [/path/to/pwndbg/gdbinit.py]
4、問題
待補充。。。
pwntools安裝
項目位址
https://github.com/Gallopsled/pwntools/
搭建過程
1、安裝環境
python
python-pip
2、安裝過程
使用pip指令直接安裝
pip install pwntools
4、問題
待補充。。。
環境使用
pwndbg使用
程式動态調試
# 直接gdb後面接程式進入程式調試
gdb [/path/to/program]
pwngdb常用指令
info
資訊檢視
info functions檢視所有函數的資訊。
info breakpoints檢視所有斷點的資訊。
info registers檢視所有寄存器的資訊。
info watchpoints檢視所有記憶體斷點的資訊。
info threads檢視所有線程的資訊。
run
直接運作程式直到遇見斷點。
start
debug模式停在main(),否則停在start()。
break
下斷點,後面可直接加函數名表示在該函數的開頭處下斷點,也可以直接加位址不過需要在位址前加上一個*号。如,break main或者break *0xdeadbeaf。
delete
可以使用delete來删除斷點,delete breakpoints删除所有斷點,delete 加上一個序号可以删除指定的斷點。
stack
檢視棧裡的内容。
x
檢視指定記憶體位址的内容。
一般是x/[n/f/u]的形式,其中n、f、u為控制列印形式的參數
n代表列印格式,可為o(八進制),x(十六進制),d(十進制),u(無符号十進制),t(二進制),f(浮點類型),a(位址類型),i(解析成指令并反編譯),c(字元)和s(字元串)
f 用來設定輸出長度,b(byte),h(halfword),w(word),giant(8bytes)。
u 指定機關記憶體單元的位元組數(預設為dword) 可用b(byte),h(halfword),w(word),giant(8bytes)替代x指令也可以顯示位址上的指令資訊,用法:x/i
checksec
檢查程式的保護機制。
next
動态調試指令,單步步過。
step
動态調試指令,單步步入。
finish
執行到目前函數的傳回處。
vmmap
檢視程式堆棧結構。
search
搜尋記憶體中的資訊。
continue
繼續運作到下一個斷點。
待補充。。。