Могу ли я определить ОС, установленную на жестком диске, по данным на уровне секторов?

Я хотел бы спросить о возможности определения того, какая операционная система установлена ​​на жестком диске, с помощью прямого чтения информации о секторах? Если, то какой сектор читать и как указать сектор и потом читать данные из него программно (полезные API)?

Кроме того, могу ли я написать код, работающий для этого, даже если его хост-система работает на виртуальной машине?


person Aan    schedule 12.11.2011    source источник
comment
Почему вы хотите это сделать? Вы пишете загрузчик? Что делать, если ваша ОС (Windows) выполняется внутри виртуальной машины?   -  person Basile Starynkevitch    schedule 12.11.2011
comment
Я просто пытаюсь закодировать это для целей обучения. А что касается проблемы с виртуальной машиной, на самом деле я не знаю, но это хороший вопрос, на мой взгляд! Я отредактирую, чтобы добавить этот момент!   -  person Aan    schedule 12.11.2011


Ответы (1)


Вы можете сделать довольно хорошее предположение, прочитав основную загрузочную запись и просмотрев тип раздела.

См. вопрос Прямой доступ к жесткому диску? для указателей на информацию о прямом чтении необработанных секторов.

person Greg Hewgill    schedule 12.11.2011
comment
Глядя на информацию о разделе, вы можете определить, как расположены разделы, что затем позволяет вам прочитать первый сектор каждого раздела, чтобы вы могли определить, какая файловая система установлена ​​​​в каждом из них. Однако эта информация не скажет вам, какая операционная система установлена ​​внутри файловой системы. Например, если вы обнаружите NTFS, вы не сможете автоматически предположить Windows, потому что Linux также поддерживает NTFS. Вам нужно либо проанализировать файлы запуска в загрузочном разделе, либо проанализировать загрузочный код, который хранится в MBR вместе с информацией о разделе. - person Remy Lebeau; 15.11.2011