我在 Linux 上运行 QEmu,虚拟化操作系统是 Windows XP。我想要第一种或第二种可能性:
- 在 QEmu 中应用一个命令,创建一个可以用 WinDbg 打开的转储
- 在 QEmu 中应用一个创建特定类型转储的命令,然后使用另一个实用程序使其可被 WinDbg 读取
我知道 QEmu 的“dump-guest-memory”(创建 ELF 转储)、rekall 的 raw2dmp
插件和 Volatility 的 raw2dmp
插件。 WinDbg 可以扫描输出,但实际上您会遇到 header 错误的问题 - 可能是转储中最重要的部分,当使用上述工具/插件创建转储时,这毫无用处。许多字段缺少正确的详细信息。与 Windows 操作系统本身创建的普通转储(例如,崩溃时)相比,它包含完整且正确的信息。
我是一名学生,我接到了解决这个问题的任务。我认为确保它还没有被任何人完成是合理的,所以这样做确实有意义。
最佳答案
如果 Qemu Monitor 命令是可接受的,请在 guest 操作系统中设置 crashonctrlscroll
注册表项
在 SystemApplet 中设置转储创建参数
Mycomputer->properties->Advanced->Startup and Recovery->Settings->Complete memory dump)
path , no overwrite , uncheck automatically restart
并从 Qemu 监视器外壳使用 sendkeys ctrl_r-scroll_lock-scroll_lock
这将生成一个与 windbg 兼容的转储
manually initiated_crash bugcheck code 0xe2
关于windows - 创建 QEmu guest 操作系统的 WinDbg 可读转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33484192/