以下说明:
0xffffd096 push eax
0xffffd097 push 0x41414141
Oxffffd09c push 0x42424242
对堆栈的影响如下:
0xffffd024|+0x0000 "BBBBAAAA" <- esp
0xffffd028|+0x0004 "AAAA"
0xffffd02c|+0x0008 Ox00000000
push imm \x68
为什么堆栈指针会自动引用合并后的两个连续操作码,与之前的push eax \x50
操作码不同?
我认为您误读了输出。
您有八个字节(“BBBBAAAA”),从 0xffffd024|+0x0000 开始。
您有四个字节(“AAAA”),从 0xffffd028|+0x0004 开始。
两个“AAAA”是相同的。
(您使用的工具可能会从起始地址打印每一“行”直到找到 0x00,就好像它们是 C 字符串一样。)
从堆栈顶部(较低地址)到底部: