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
。
我有一个故障转储,其中显示了以下异常信息:
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
。