如何在 Visual Studio 调试器中查看段偏移内存地址?

Ada*_*eld 3 debugging x86 disassembly visual-studio memory-segmentation

我正在从反汇编中调试一些代码(没有可用的源代码),并且有许多指令通过ds段寄存器访问数据,例如这样的:

66 3B 05 8A B1 43 00 cmp         ax,word ptr ds:[43B18Ah]
Run Code Online (Sandbox Code Playgroud)

你如何让 Visual Studio 调试器告诉你ds段寄存器的偏移量,以便我可以检查它所指的内存?Watch 窗口似乎不接受像ds:[0x43B18A]或变体这样的表达式;它会告诉我那ds是 0,但这并没有告诉我段 0 的偏移量是多少。

是否有一些特殊的语法,或者这是 VS 无法做到的?使用其他调试器(例如 WinDbg 或 ntsd)会更好吗?

Han*_*ant 5

这是 Visual Studio 内置反汇编器的一个怪癖。这是多余的,DS寄存器是默认的。忽略它,在 Windows 上 DS、CS 和 ES 寄存器设置为相同的值。保护模式选择器。与 Memory 窗口使用的值相同。只需省略 ds: 前缀。