我正在使用 Windbg 来研究进程内存,并且不禁注意到人们刚刚接受的一些东西。当您打印出寄存器时:
eax=00000000 ebx=008b6f00 ecx=01010101 edx=ffffffff esi=00000000 edi=00465000
eip=77f9d022 esp=05cffc48 ebp=05cffc54 iopl=0 nv up ei ng nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000286
请注意,ESP 和 EBP 的值低于 EIP,这意味着堆栈比进程的文本部分低(!?)。为什么是这样?据我所知(我在 Linux 中也用 gdb 做过同样的事情),堆栈应该在高内存和低文本 - 就像许多书中所说的那样。
有什么我不知道的吗?