Windows 内核调试器 API?...访问字符串

发布于 2024-08-29 15:46:43 字数 146 浏览 6 评论 0原文

如何读取通过调用 kdPrint 或 debugPrint 函数生成的 Windows 内核调试器字符串?

特别是在用户模式下阅读,但在内核模式下也很好!

它与 DebugView 的作用相同,但我想过滤并仅处理提供给调试器的某些消息(字符串)。

How can you read Windows kernel debugger strings generated by calls to kdPrint or debugPrint functions?

Reading in user mode especially, but it is also good in kernel mode!

It's the same thing as DebugView does, but I want to filter and to work only with certain messages (strings) given to the debugger.

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

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

发布评论

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

评论(1

内心激荡 2024-09-05 15:46:43

在用户模式下,您 DBWIN "API":

  1. 创建一个命名的(“DBWIN_BUFFER”)共享内存区域(4096 字节,第一个 DWORD 是进程 pid)和两个事件
  2. 通知 DBWIN_BUFFER_READY 命名事件
  3. 等待 DBWIN_DATA_READY 命名事件
  4. 读取共享内存(并转到步骤 #2 获取下一个输出)

在 NT6 上的内核模式中,您有 DbgSetDebugPrintCallback

在较旧的东西上,您需要进行某种挂钩( int 0x2d / DebugService)找到更多帮助的最佳位置可能是 OSR 新闻组

编辑:在 Vista 及更高版本上,您需要设置 Debug Print Filter 注册表项启用来自 DbgPrint[Ex] 的调试输出消息(对于 KdPrint,您需要内核调试器 IIRC)

In user mode, you have the DBWIN "API":

  1. Create a named ("DBWIN_BUFFER") shared memory region (4096 bytes, first DWORD is the process pid) and two events
  2. Signal the DBWIN_BUFFER_READY named event
  3. Wait for the DBWIN_DATA_READY named event
  4. Read shared memory (And go to step #2 to get the next output)

In kernel mode on NT6 you have DbgSetDebugPrintCallback

On older stuff, you need to do some sort of hooking (int 0x2d / DebugService) The best place to find more help about that is probably the OSR newsgroup.

Edit: On Vista and later, you need to set the Debug Print Filter registry entry to enable debug output messages from DbgPrint[Ex] (For KdPrint you need a kernel debugger IIRC)

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