如何在 Visual Studio 2017 中更改内存字节?

How do I change memory bytes in Visual Studio 2017?

在我的 Visual Studio 2017 中调试 C++ 项目时,我正在尝试更改内存中的字节,在内存 window 中。内存 window 指向内存保存代码,因为我试图快速修补一段代码(只需要更改参数值)而无需停止并重新编译。 我还注意到,即使对于数据内存,您也无法更改内存 window 中的值。 是否有一些隐藏的配置设置可以让你这样做。可以在 VS6 中执行此操作。

How do I change memory bytes in Visual Studio 2017?

据我所知,Microsoft不支持在最新的Visual Studio中直接更改内存字节,包括VS2017并且没有这样的隐藏选项来实现它。

一般,在调试期间,内存 window 显示您的应用程序正在使用的内存 space . Memory window 不限于显示数据。它显示内存中的所有内容 space,包括数据、代码和未分配内存中的随机垃圾位。

外,内存字节随着调试器windows中变量值的变化而变化,例如WatchAutosLocal Variables,以及 QuickWatch 对话框。然后分析它在内存占用方面的变化,从而改进程序。因为它,我们不能直接改变它。

此外,关于内存的更多信息Window,您可以查看this official document

我找到了一种变通方法,它甚至可以用于修改可执行代码内存。 以下是步骤:

  1. 在你的代码中定义一个备用的全局指针(你实际上可以在你的代码中使用任何内存指针,只要你不关心你会改变它的值):

    char* memptr;

  2. 在手表中设置指针window。

  3. 将指针值设置为要修改的内存地址。
  4. 扩展内容(顺便说一句,您可以在手表 window 中使用 "memptr,100" 来访问多个字节)。
  5. 在扩展的字节值单元格中键入更新后的值。

即使您将指针设置为可执行机器代码内存,这仍然有效,因此您可以使用它来修补代码。

它可以是 int 指针或任何其他类型,或者如果您想编辑任何其他类型的对象,您可以在手表中使用强制转换 window .

小心这可能很危险,修改内存必须非常小心。