我正在尝试从动态 VHD 的 NTFS 文件系统的主引导部分计算 MFT 偏移量。此动态 VHD MFT 的 Little Endian 群集位置突出显示:
然后进一步解析为MFT_OFFSET= cluster_address * sector_per_cluster * SECTORSIZE
(此处SECTORSIZE
为 512)来计算 MFT 的实际偏移量...此计算适用于固定 VHD 的情况。但在动态 VHD 中却并非如此。
在动态中,我有块分配表值。我用来计算磁盘 MBR 的第一个条目然后将我指向磁盘的第一个分区。在这里我可以计算 MBS 偏移量。但是当我使用上面提到的集群位置来计算 MFT 位置时,它指向其他地方。
有哪些进一步的步骤可以帮助我解决这个问题?
是的,因为您再次需要解决额外的翻译步骤。如果我们假设:
然后根据我如何阅读谷歌搜索的各种文档(例如: https: //redcircle.blog/2008/12/01/dynamic-vhd-walkthrough/),我们需要克服一个附加的翻译层:
Cluster > LBA(如果我们处理的是驱动器)。由于您不依赖操作系统或文件系统驱动程序,因此您需要自行解决普通磁盘 I/O 示例中的步骤 1 - 5。
群集 > LBA,然后 LBA > VHD 内的块。由于您不依赖操作系统或文件系统驱动程序,因此您需要自行解决动态 VHD I/O 示例中的步骤 1 - 9。
您按照以下步骤解决了 MBR,您必须对 MFT 的位置执行相同的操作。而且你不能假设一旦你翻译了 MBR 的位置,从那时起你就可以“算”为:
“此外,永远不要假设扇区偏移量是连续的。偏移量的转储显示它们可以被打乱。” - 来自我之前链接到的页面。
IOW,您想要阅读的每个部分都必须在“BAT”中查找。