WinDbg:地址中的冒号,是什么意思?

WinDbg: Colon in address, what does it mean?

我有一个故障转储,其中显示了以下异常信息:

0:000> .ecxr
eax=00000000 ebx=00000001 ecx=000000dc edx=000032f0 esi=00000020 edi=78746341
eip=00000000 esp=00000007 ebp=00000020 iopl=0         nv up di pl nz na po cy
cs=0014  ss=0034  ds=0000  es=1000  fs=df5c  gs=0000             efl=00000001
0014:00000000 ??              ???

为什么异常地址显示为0014:00000000,而不仅仅是00000000?据我了解,0014是代码段,但我没有找到任何关于语法的文档。

此外,有没有办法将此语法转换为普通的绝对地址?

是的,seg:off 是 100% 标准表示法。它只是向您显示完整的 CS:EIP 值。

CS 基础是 0 除非你做了一些真的 奇怪的事情(例如 retf 将一些东西弹出到 CS 中,恰好用非-零基础,如果有的话)。

所以线性地址就是00000000。例如你试图跳转到 NULL 函数指针或其他东西,或者当 ESP 指向 0 而不是你的 return 地址时试图 ret