x86 - WinDbg:地址中的冒号是什么意思?
问题描述
我有一个故障转储,其中显示以下异常信息:
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 base 是0
除非你做了一些非常奇怪的事情(例如retf
,在 CS 中弹出一些东西,碰巧索引一个非零基数的 GDT 条目,如果甚至有一个)。
所以线性地址就是00000000
. 例如,您尝试跳转到 NULL 函数指针或其他内容,或者尝试ret
在 ESP 指向 0 而不是您的返回地址时跳转。
推荐阅读
- javascript - foreach 循环中带有回调的函数
- kubernetes - 如何使用 traefik 进行用户级访问控制
- mysql - 替换 Hive 表中的数字列表
- c - 将每个成员初始化为一个空的 C 字符串
- python-3.x - 使用 Cython 使用 numpy lib 编译 Python 函数
- c# - C# 类具有不同的操作集应用于
- android - Nativescript - 不同设备上的应用启动图标形状
- html - Bracket IDE 的 VS Code 的 Quick Markup 等价物
- mysql - 过滤表,基于另一个表中的字段
- matlab - islogical(img) 在倒置二进制图像上返回 false?