如何得到OS物理内存?
为了分析计算机操作系统的运行状态和内容,或者进行内存取证,我们经常需要取得系统的物理内存,并把它保存在一个文件中,用于以后的分析和处理。
那么如何取得系统的内存呢?有几种方法,我一一道来。
利用虚拟机保存物理内存:如果目标系统在虚拟机中,无论系统类型是什么(Windows, Linux, *BSD, Minix, Solaris),我们都可以借助虚拟机来取得Guest OS的内存。
具体来说,如果我们使用的虚拟机是VMware Workstation, 我们可以使用take a snapshot功能,每次Take a snapshot, 我们就会得到一堆文件,其中*.vmem就是Guest OS的物理内存文件。
如果我们使用Qemu作为虚拟机,那么我们可以使用命令pmemsave 来获得Guest OS的物理内存。 比如
pmemsave 0 268435456 mem
保存256M内存到文件mem中。
利用本机工具保存物理内存:如果操作系统不在虚拟机中,或者我们不想使用虚拟机来取得内存,我们可以使用系统自带的一些功能来取得物理内存。
在Linux操作系统中, /dev/mem 就是物理内存的设备文件,我们可以使用 dd命令来取得物理内存。如下
dd if=/dev/mem of=~/mem
Windows 和 Mac OS X下也有类似的工具可以取得物理内存。
取得物理内存后,我们就可以使用相关工具(比如 volatility, crash),或者自己写工具来分析内存数据了。