2013-01-06 28 views
1

我正在學習本書「Hacking The Exploitation 2nd Edition」,並且已經到達了第一個障礙。GDB檢查命令,多個單元在目標地址

在GDB我可以理解,這樣的代碼:

x/x $rip 

將檢查寄存器$ RIP和輸出十六進制。

但什麼是該做的代碼:

x/2x $rip 

書上說這是在目標地址檢查多個單位。但這是否意味着它顯示了未來2次價格變化的$ rip值。或者這意味着什麼?

Columbo會說另外一個問題。在我調用檢查命令後,我得到:

0x100000f00 <main+8> 0x00fc45c7 

main + 8是什麼意思?

回答

4

x/x $rip將檢查寄存器$ rip並以十六進制輸出。

這是不正確的:它會檢查內存通過$rip指向。如果你想檢查$rip本身,你會使用print/x $rip

但什麼是該做的代碼:x/2x $rip

它考察兩個字的存儲空間,通過$rip指出。

是什麼意思main+8

這意味着你正在尋找包含指令的內存,在偏移8main()

+0

謝謝開始。我對$ rip的唯一理解是它指向處理器正在閱讀的當前指令。當你說它檢查$ rip指向的兩個內存單詞時,這是否意味着它正在查看當前指令,然後是那個指令?如果我把x/100x $ rip?這是否看看接下來的100條指令? – jimbo123

+0

@ jimbo123「這是否意味着它正在看當前的指令,然後是那個?」 - 如果每條指令都佔用一個字,這在許多RISC處理器上都是如此,但在x86上不是這樣。否:您正在查看2個32位字,並且可以涵蓋多達8條指令(最短的x86指令僅爲1個字節),或者只有一條(最長的x86指令爲15個字節)。 –

+0

非常感謝!這可能是一個非常基本的問題,但它有助於我理解本書的其他部分 – jimbo123