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

发布于 2024-09-17 17:32:35 字数 375 浏览 5 评论 0原文

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

66 3B 05 8A B1 43 00 cmp         ax,word ptr ds:[43B18Ah]

How do you get the Visual Studio调试器告诉您 ds 段寄存器的偏移量,以便我可以检查它所引用的内存? Watch 窗口似乎不接受诸如 ds:[0x43B18A] 或变体之类的表达式;它会告诉我 ds 是 0,但这并没有告诉我段 0 的偏移量是多少。

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

I'm debugging some code from the disassembly (no source code is available), and there a number of instructions accessing data via the ds segment register, e.g. something like this:

66 3B 05 8A B1 43 00 cmp         ax,word ptr ds:[43B18Ah]

How do you get the Visual Studio debugger to tell you the offset of the ds segment register so that I can inspect the memory this is referring to? The Watch window does not seem to accept expressions like ds:[0x43B18A] or variants; it will tell me that ds is 0, but that doesn't tell me what segment 0's offset is.

Is there some special syntax for this, or is this something that VS just can't do? Would I have better luck with another debugger, such as WinDbg or ntsd?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抹茶夏天i‖ 2024-09-24 17:32:35

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

This is a quirk of the disassembler built into Visual Studio. It is superfluous, the DS register is the default. Just ignore it, on Windows the DS, CS and ES registers are set to the same value. A protected mode selector. And the same value used by the Memory window. Just omit the ds: prefix.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文