我使用命令" x / 50gx $ exp"得到了这个十六进制地址。在gdb上:
0xbfffca44: 0xbfffdaa800279ff4 0x0804869008048583
0xbfffca54: 0x00000004bfffcaa0 0x0000000000000000
0xbfffca64: 0x0000000000000000 0x0000000000000000
0xbfffca74: 0x0000000000000000 0x6b63736600000000
0xbfffca84: 0x006369676f6c656d 0x6b63736600000000
0xbfffca94: 0x006369676f6c656d 0x4141414100000000
0xbfffcaa4: 0x4141414141414141 0x0000000041414141
0xbfffcab4: 0x0000000000000000 0x0000000000000000
我想弄清楚41序列的起始地址是什么,但我不知道如何计算它。
有人可以帮忙吗?
答案 0 :(得分:3)
假设这是一个小端机器,每个整数中字节的实际顺序是相反的,因此反转行中的每个整数值:
or
给我们:
0xbfffca94: 0x006369676f6c656d 0x4141414100000000
前41个是从开始的12个(0xc)字节,所以它的地址是0xbfffca94: 6d 65 6c 6f 67 69 63 00 00 00 00 00 41 41 41 41
另外 - 如果您对字节感兴趣,而不是更大的整数,则可以使用不同的格式转储它,例如0xbfffcaa0 (0xbfffca94 + 0xc)