按需从用户 space 获取内核转储,无需内核调试 (Windows)

Take kernel dump on-demand from user-space without kernel debugging (Windows)

生成具有句柄信息的内核转储的最简单、最便携的方法是什么(在只需要将几个文件复制到目标机器的意义上,就像 procdump 一样)?

procdump 具有 -mk 选项,它生成与指定进程有关的有限转储文件。在 WinDbg 中报告为: Mini Kernel Dump File: Only registers and stack trace are available。我尝试的大多数命令(!handle!process 0 0)都无法读取数据。

官方看来,windbgkd 会生成转储(这需要内核调试)。

我发现一个奇怪的解决方案是使用 livekd-mlGenerate live dump using native support (Windows 8.1 and above only).livekd 仍然寻找 kd.exe,但不使用它 :) 所以我可以用一个空文件来欺骗它,并且不需要内核调试。知道它是如何工作的吗?

LiveKD 使用未记录的 NtSystemDebugControl API 来捕获内存转储。虽然您可以轻松地在网上找到有关 API 的信息,但最简单的方法就是使用 LiveKD。