0x01:偏移量
0x7fffffffdd00: 0x4141414141414141 0x4141414141414141 0x7fffffffdd10: 0x4141414141414141 0x4141414141414141 0x7fffffffdd20: 0x4141414141414141 0x00007fffffffe1cd 'A'*40 + '\xcd\xe1\xff\xff\xff\x7f' 經常在payload中看到如上的形式,很是納悶,現在來說明一下。 先明確一下字節(byte)為8位,為了減少信息的長度,用十六進制表示,學過C語言的朋友都知道'A'的ASLL碼為65,轉化為十六進制為41 數據在內存中的存放方式: 舉一個例子,比如數字0x12 34 56 78在內存中的表示形式為:1)大端模式:
低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
0x02:區別
EBP存儲着當前棧幀的棧底的地址,通常作為基址,通過ebp和偏移相加減來獲取變量地址。而esp始終指向棧頂,隨棧內數據增加或減少而變化。而IDA是靜態調試,計算出來的偏移跟動態調試是有區別的。