我可以使用扇区级数据确定安装在硬盘中的操作系统吗?

Posted

技术标签:

【中文标题】我可以使用扇区级数据确定安装在硬盘中的操作系统吗?【英文标题】:Can I determine OS installed in hard disk using sectors level data? 【发布时间】:2011-12-27 17:50:11 【问题描述】:

我想问一下是否可以通过直接读取扇区信息来确定硬盘中安装了哪个操作系统?如果,我应该读取哪个扇区以及如何指定一个扇区,然后以编程方式从中读取数据(有用的 API)?

另外,即使它的主机系统在虚拟机中工作,我是否可以编写代码来做到这一点?

【问题讨论】:

你为什么要这样做?你在写一个引导加载程序吗?如果您的操作系统(windows)在虚拟机中执行怎么办? 我只是为了学习目的而编写代码。关于VM问题实际上我不知道,但在我看来这是一个好问题!我将编辑添加这一点! 【参考方案1】:

您可以通过阅读master boot record 和查看partition type 得到一个很好的猜测。

请参阅问题Direct access to harddrive? 以获取有关直接读取原始扇区的信息。

【讨论】:

查看分区信息可让您确定分区的布局方式,然后您可以读取每个分区的第一个扇区,以便确定每个分区中安装了哪个文件系统。但是,该信息不会告诉您文件系统中安装了哪个操作系统。例如,如果您检测到 NTFS,则不能自动假定为 Windows,因为 Linux 也支持 NTFS。您需要分析可引导分区中的启动文件,或者分析存储在 MBR 中的引导代码以及分区信息。

以上是关于我可以使用扇区级数据确定安装在硬盘中的操作系统吗?的主要内容,如果未能解决你的问题,请参考以下文章

读取重新映射的硬盘扇区

如何确定 Windows 中的扇区大小?

vm17报错

Windows XP 上用于高级格式硬盘的物理扇区大小

直接高效地读写硬盘扇区[重复]

如何设置M1卡其中一个扇区为只读,不允许写入