在WinDbg中显示共享内存部分的内容?

在WinDbg中显示共享内存部分的内容?,windbg,Windbg,我有两个程序使用一个命名的内存段进行通信。有什么方法可以在用户模式或内核模式下从WinDBG查看此共享内存部分的内容吗?我没有指向它的指针,但我知道它的名称。使用用户模式调试器。。。您是否可以编写一个非常简单的测试应用程序,获取对命名内存部分的访问权限(即调用OpenFileMapping,然后调用MapViewOfFile),然后在调试器下运行该应用程序?你应该能够跨过呼叫访问该分区,然后检查该应用程序的分区视图 (如果有帮助,上的“第二个进程”标题提供了进程访问命名共享内存段并将其映射到其地

我有两个程序使用一个命名的内存段进行通信。有什么方法可以在用户模式或内核模式下从WinDBG查看此共享内存部分的内容吗?我没有指向它的指针,但我知道它的名称。

使用用户模式调试器。。。您是否可以编写一个非常简单的测试应用程序,获取对命名内存部分的访问权限(即调用OpenFileMapping,然后调用MapViewOfFile),然后在调试器下运行该应用程序?你应该能够跨过呼叫访问该分区,然后检查该应用程序的分区视图

(如果有帮助,上的“第二个进程”标题提供了进程访问命名共享内存段并将其映射到其地址空间的示例代码。)


我通常喜欢编写小型测试工具来帮助调试这样的东西。。。如果您想让事情变得更简单,您甚至可以编写测试工具来自动断开任何连接的调试器(使用类似于DebugBreak的函数)。

只是尝试在我们的共享内存上执行此操作,而没有得到您想要的,但我在这里为子孙后代做一些说明:

  • 我找不到从名称中获取句柄的简单方法,但如果执行“!handle 0 f”,然后搜索输出,则可以看到内核对象的名称及其句柄ID:get handle from this
  • 显然,共享内存内核对象中没有进程特定的地址,但是 .call/s knownfunchSamePrototype MapViewOffilex确实返回看起来像有效指针的内容
“.call”需要完整的符号才能工作,但MapViewOfFile(Ex)没有完整的符号,我碰巧发现一个函数返回了一个指针并在代码中使用了六个参数,所以我不需要重新编译就可以工作(这就是上面KnownFungWithSamePrototype的意思)。我不确定这是否是你的选择


希望这有帮助

你有没有发现过?使用Sysinternals中的Process Explorer和LiveKD可以很容易地获取命名部分的地址,我可以检查该文件\ u对象,但我仍然无法确定如何获取内容本身。下面是包含一个_EX_FAST_REF作为文件指针的控制区域。