iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0

這次的Reverse會用兩種作業系統和反編譯工具來操作,這邊先介紹GDB的基本操作,這些指令都有縮寫,比如disassemble可以寫成disas,但這邊先介紹完整指令,但在實作部分會使用縮寫。

disassemble [function name],反編譯某個Function,也可以自訂反編譯的目標,例如main,+5是讓程式從main開頭顯示到main+5行內的程式碼,main+4,+7是讓程式從main+4顯示到main+7當中的程式碼,也可以直接輸入address來進行反編譯的顯示。
還有許多指令,例如輸入/r main,則會出現對應的OPcode等。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016jboQRC8aBp.png

set disassembly-flavor [att|intel],轉換逆向出來的組合語言是AT&T或Intel。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016demTmnF2lf.png

break [address],設定程式中斷點,可以是Address也可以是Function name。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016YKbfJrqzJw.png

run,讓程式跑起來,如果沒有設定中斷點則會將程式執行到輸入點或會讓程式等待的點,如果都沒有,就會執行到程式結束。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016uEZDslhi2U.png

start,與run的用法一樣,不同的點在於輸入後會停留在main()的第一行程式碼等待接下來的指令,其實等同於break main後下run指令。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016oVEYYJbKxx.png

next,不進入其他函數內,執行到下一個中斷點。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016HIyg8PHbpV.png

nexti,不進入其他函數內,一行一行執行。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016Z50Fq50X0f.png

step,跑到下一個函數內等待,可以看到main第一個call的是printf,如果在main下step就會在printf第一行等待。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016cwEDOLcXdH.png

stepi,逐步執行,會進入到其他函數內,在執行到printf時下stepi時會進入printf裡面。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016jkoFKNvIDI.png

x/s,用字串的形式查看指定的內容,指定形式的前面加入數字可以輸出接下去的內容(x為examine的意思)。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016yt4zp6gEU5.png
https://ithelp.ithome.com.tw/upload/images/20240917/20169016KpwYOD3qC0.png

以下這些都能夠在指定形式前加入數字,來檢視接下去的內容
x/d,用十進制的形式查看指定的內容
x/x,用十六進制的形式查看指定的內容
x/f,用浮點數的形式查看指定的內容
還有t為二進制和o為八進制等各種形式表達,有興趣可以搜尋GDB x指令的其他輸出形式。
而在指定形式後方加入h表示2bytes、w表示4bytes形式輸出、g表示8bytes等。
https://ithelp.ithome.com.tw/upload/images/20240917/20169016TSuzhhGcl5.png
在這次的分析當中會用到的大概有這些,當然GDB還有非常多的指令與功能,而且是在Linux系統下常用的動態逆向工具,很推薦有興趣的可以再深入研究。


上一篇
組合語言與EFLAGS
下一篇
Windows IDA介紹
系列文
從0開始的打Pwn教學14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言