以下说明:
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 字符串一样。)
从栈顶(低地址)到栈底:
0xffffd024|+0x0000 "BBBB" (four bytes, 0x42424242)
0xffffd028|+0x0004 "AAAA" (four bytes, 0x41414141)
0xffffd02c|+0x0008 Ox00000000 (four bytes, the content of eax)