簡體   English   中英

GDB檢查命令混亂

[英]GDB examine command confusion

這可能聽起來令人難以置信,但我真的想要了解代碼的內部工作方式,而不僅僅是堅持更高層次的概念。

所以我的問題是這個。 我目前正在閱讀“黑客攻擊和剝削藝術”,而作者正在解釋GDB命令,他來解釋如何檢查某個內存地址。

我的問題是命令的輸出

(gdb) x/x $eip

我理解x代表十六進制,我不明白為什么它顯示為:

0x8048384  <main+16>:  0x00fc45c7

如果我run ir eip輸出是0x8048384,那么不應該從x/x $eip兩個輸出都是0x8048384?

在一個相關的主題上,諸如此類的東西的目的是什么

(gbd) x/2x $eip

他說,要檢查同一地址的多個單位,一個地址中有多個單位? 也許我誤解了內存地址背后的概念。 我以為內存位置只能容納1件事。

如果這看起來像一個愚蠢的問題,我再次道歉。 我很樂意感謝幫助和進一步學習的鏈接。 我真的很想了解這一點。

在第一個示例(x / x $ eip)中,顯示的第一個值(0x8048384)是要執行的下一條指令的地址,而顯示的第二個值(0x00fc45c7)是該地址的值FOUND,即二進制值要執行的下一條指令

至於你的第二個例子(x / 2x $ eip),“多個單位”不在SAME地址,而是在給定地址開始...例如,顯示的第一個值(假設$ eip與你的第一個例子)在地址0x8048384仍然是0x00fc45c7,但下一個值將是下一個地址0x8048388中的任何值。 “x / x”非常適合轉儲RANGE地址的值,即數組中的值等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM