为了学习的目的,我想以实时模式完全访问客户QEMU的物理内存。 “pmemsave”命令冻结来宾操作系统。有没有办法让我以某种方式将物理内存映射到 Linux 分区,以便以实时模式进行访问?
我尝试使用 pmemsave,但它冻结了,我想要实时访问
嗯,这会转储 qemu-monitor 中的内存,而不是在硬盘上创建文件。
xp /fmt addr
xp
物理内存转储从 addr 开始。
fmt
是一种格式,告诉命令如何格式化数据。
其语法为:
/{count}{format}{size}
count
是要倾倒的物品数量。
format
可以是 x(十六进制)、d(有符号十进制)、u(无符号十进制)、o(八进制)、c(字符)或 i(asm 指令)。
size
可以是 b(8 位)、h(16 位)、w(32 位)或 g(64 位)。在 x86 上,可以使用 i 格式指定 h 或 w 来分别选择 16 位或 32 位代码指令大小。
示例:
在当前指令指针处转储10条指令:
(qemu) x/10i $eip
0x90107063:返回
0x90107064:sti
0x90107065: lea 0x0(%esi,1),%esi
0x90107069: lea 0x0(%edi,1),%edi
0x90107070:ret
0x90107071:跳转0x90107080
0x90107073:没有
0x90107074:没有
0x90107075:没有
0x90107076:没有
如果应用程序冻结,可以尝试较小的块。这会转储 1 MB...
pmemsave 0x000 1048576 file.dmp