WdbgExts 内存访问
本主题简要概述了如何使用 WdbgExts API 执行内存访问。 有关调试器引擎中内存访问的概述,请参阅本文档的调试器引擎概述部分中的内存。
虚拟内存
可以使用 ReadMemory 函数读取目标的虚拟内存,并使用 WriteMemory 函数写入。 可以使用 ReadPointer、 ReadPtr 和 WritePointer 函数读取和写入目标内存中的指针。
若要在虚拟内存中搜索字节模式,请使用 SearchMemory 函数。
TranslateVirtualToPhysical 函数可用于将虚拟内存地址转换为物理内存地址。
Disasm 函数可用于对目标上的单个程序集指令进行反汇编。
若要在使用物理地址扩展 (PAE) 时检查 4 GB 的低内存损坏,请使用 Ioctl 操作IG_LOWMEM_CHECK。
物理内存
只能在内核模式调试中直接访问物理内存。
可以使用 ReadPhysical 和ReadPhysicalWithFlags 函数读取目标上的物理内存,并使用 WritePhysical 和 WritePhysicalWithFlags 函数写入。
若要在物理内存中搜索指向指定范围内位置的指针,请使用 Ioctl 操作 IG_POINTER_SEARCH_PHYSICAL。
其他数据空间
在内核模式调试中,除了main内存之外,还可以将数据读取和写入各种数据空间。 可以访问以下数据空间:
Control-Space Memory
函数 ReadControlSpace、ReadControlSpace64、ReadTypedControlSpace32 和 ReadTypedControlSpace64 将从控件空间读取数据。 WriteControlSpace 函数会将数据写入控件空间。
I/O 内存
函数 ReadIoSpace、ReadIoSpace64、ReadIoSpace64、ReadIoSpaceEx64 将从系统 I/O 内存和总线 I/O 内存中读取数据。 函数 WriteIoSpace、WriteIoSpace64、WriteIoSpaceEx 和 WriteIoSpaceEx64 会将数据写入系统 I/O 内存和总线 I/O 内存。
特定于模型的寄存器 (MSR)
函数 ReadMsr 和 WriteMsr 读取和写入 MSR。
系统总线
Ioctl 操作IG_GET_BUS_DATA和IG_SET_BUS_DATA读取和写入系统总线数据。
其他信息
有关更强大的内存访问 API,请参阅本文档的使用调试器引擎 API 部分中的内存访问。