如何在VMDK文件中找到MBR扇区?

时间:2015-01-06 17:40:47

标签: bios mbr virtual-disk

我试图了解vmware bios在加载MBR之前如何找到MBR
在物理硬盘中它很容易 - MBR位于第一扇区 但是......在VM中会发生什么?

我创建了2个VM - 在第一个vmdk(安装了基于linux的系统)上,我发现MBR偏移量为0x2A0000。 在第二个vmdk文件中(安装了Windows XP),我发现MBR不止一次 - 但是我找到的所有偏移量都不能除以512(扇区大小),这有点奇怪(到目前为止)据我所知,MBR应该从一个扇区的开头开始+扇区大小是512字节,在vmdk' s => MBR的起始偏移必须除以512.纠正我,如果我错了。) 所以他们可能是备份副本我猜... 毋庸置疑,xp .vmdk中的@偏移0x2A0000并不是什么有趣的事情。

那么.. vmware的BIOS如何找到MBR?这个可配置参数位于何处?如何计算?

附加信息:
- 两个VMDK都是1个文件硬盘文件(并且可以增长到40GB)。
他们所服务的系统使用它们&只有他们(XP使用xp.vmdk,linux使用linux.vmdk,没有额外的VMDK' s)。

- @Windows VM我在\。\ PhysicalDrive0上使用WinHex来获取MBR.it看起来没问题(签名等等)。
- @Linux VM我使用命令" dd if = / dev / sda = mbr.bin bs = 512 count = 1",然后查看十六进制字节以获取MBR。我看着它和它看起来很好(GRUB,最后签名等)。
从VM获得MBR之后,我在每个相应的.vmdk文件中搜索了主机pc中的MBR(使用十六进制编辑器),并且偏移量如上所述。

任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:9)

看到这个问题的人仍然没有评论或回答,所以我自己做了一点研究 得出以下结论(最终回答了我的问题):

1.当使用VMware(.VMDK文件)创建XXX GB虚拟硬盘时,它可以是以下两种类型之一:平面或稀疏(它们也可以分割为多个.VMDK文件,但我没有涵盖那些我的研究) - flat =所有硬盘空间(XXX GB)在创建时分配一次 磁盘上的.VMDK文件大小为XXX GB。

- 稀疏 =硬盘文件是可消耗的(最多XXX GB) .VMDK文件大小在开始时很小,在需要时会增长。

正如我在附加信息中提到的那样,两个.VMDK都是稀疏

2.如问题所述, MBR位于物理硬盘的第一个扇区的开头,我想知道它在.VMDK文件中的位置以及VMware如何计算它。
事实证明在平面.VMDK文件上,它也位于第一个扇区的开头!
当看着它们时,这是非常直接的前言..但我的并不平坦。那么,稀疏的.vmdk会发生什么? mbr在哪里?

3.sparse .vmdk文件具有不同的结构(对于详细的结构,您可以阅读VMware's Virtual Disk Format Spec,重点关注struct sparseExtentHeader。
无法找到MBR \第一扇区如何计算的逻辑,但就我所见(在5中我如何解释),它是这样的:

@ .VMDK偏移量0x38 - 0x3F(长度为8个字节)位于gdOffset.it存储元数据的偏移量(****)。
元数据的前4个字节是跳转到的下一个偏移量(****) 在那里,接下来的4个字节是MBR的偏移量(****) (****)表示部门的抵消。例如1表示偏移512,2表示1024等。

总而言之,它看起来像这样:
假设'存储在偏移量0x38-0x3F(长度为8个字节)'的数据为[(0x38):8]。

然后,
MBR偏移= 512 X [(512 X [(512 X [(0x38):8]):4]):4]

4.我创建了2个具有稀疏.VMDK的新VM(Windows xp和Linux),这种MBR计算方法也证明了它们两者(如附图7中所示)。

5.我是如何得到这个公式的?在过滤时使用SysInternal's process Monitor
-Process包含vmware
-Operation是CreateFile \ ReadFile
-Path包含< .vmdk文件路径>

我得到了每一个.vmdk读取(它的偏移) 我看了它读取MBR的偏移量(在Linux系统中,我知道偏移量是0x2A0000),以及之前已读过的内容。跳到偏差看起来他们将帮助我弄清楚那里发生了什么......他们肯定做了:)

6.我没有解释的是为什么原始问题中xp系统中的MBR处于奇怪的偏移(不能除以512)。
好吧,说实话,我没有充分的理由,但我忘了提到MBR检查之前我从这个系统中删除了原来的MBR并为VM供电。它问我是否要正常启动窗口,然后才会出现奇怪的偏移(将其复制到备份或其他东西)。这里奇怪的是我找不到正常偏移的MBR。我有一些进步但没有坚定的答案 如果有人知道,请随时发表评论(:

7.附加图像:
Windows XP MBR finding explanation Linux MBR finding explanation