Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > Что ВиндаХП пишет в MBR ?


Автор: CDEater 30.11.2006, 11:03
Раньше думал, что первые 0x1BE байт MBR отведены полностью под код загрузчика, но недавно обломался. Написал свой загрузчик, а на этом месте хранил пароль - винда видит, что там dword нуль, и чего-то своего туда нахреначила, сказала, что обнаружила новое устройство и просит перезагрузить комп. Пароль, естественно, накрылся  smile 

Просветите, какая область MBR может быть использована для кода загрузчика с гарантией неизменности. Вдруг ещё какая-нибудь ОС решит писать в MBR свои переменные ? 
И есть ли документ на эту тему (всё-таки MBR - вещь ОС-независимая, и должны быть какие-то правила его использования, а не просто виндузовая отсебятина, учитывая что на современных компах часто несколько ОСей сидят в разных разделах одного винта) ? 

Автор: rsm 30.11.2006, 11:25
Цитата(CDEater @  30.11.2006,  13:03 Найти цитируемый пост)
какая область MBR может быть использована для кода загрузчика
Никакая. Потому что под MBR отведено ровно 200h байт, которые могут быть использованы любой ОС по своему усмотрению.

Цитата(CDEater @  30.11.2006,  13:03 Найти цитируемый пост)
всё-таки MBR - вещь ОС-независимая
В MBR находится код, получающий управление после загрузки BIOS. Это может быть код загрузчика любой ОС или вообще произвольный код, хоть "Hello, World!".

Цитата(CDEater @  30.11.2006,  13:03 Найти цитируемый пост)
на современных компах часто несколько ОСей сидят в разных разделах одного винта
И управляются, по сути, опять-таки из MBR одним загрузчиком.

Загляни на http://www.symon.ru, там в документации довольно неплохо описан процесс загрузки, участие в нем MBR и все такое.

Автор: CDEater 30.11.2006, 11:47
rsm, прочитал по ссылке, не нашёл для себя ничего нового.  Кстати, и бутменеджер этот вполне посредственный (напр., мой поддерживает в 2.5 раза больше разделов, хотя я не ставил такой цели при его написании).  
А главное - там нигде не написано, что каждая ОС вольна использовать MBR по своему усмотрению, как ты утверждаешь.  ИМХО это в корне неверно.  Наверняка есть стандарт, кинул бы кто ссылку на него...
И всё-таки, что за переменную WinXP хранит по смещению +1B8h ?

Автор: dumb 30.11.2006, 13:58
Цитата(CDEater @  30.11.2006,  11:47 Найти цитируемый пост)
А главное - там нигде не написано, что каждая ОС вольна использовать MBR по своему усмотрению, как ты утверждаешь.  ИМХО это в корне неверно.  Наверняка есть стандарт, кинул бы кто ссылку на него...

Цитата

Format of hard disk master boot sector:
Offset    Size    Description    (Table 00629)
 00h 446 BYTEs    Master bootstrap loader code
1BEh 16 BYTEs    partition record for partition 1 (see #00630)
1CEh 16 BYTEs    partition record for partition 2
1DEh 16 BYTEs    partition record for partition 3
1EEh 16 BYTEs    partition record for partition 4
1FEh    WORD    signature, AA55h indicates valid boot block

верно-верно.. это область кода загрузчика, соотв-но rsm прав.

а что, твоему бутменеджеру больше негде сохранить 4 байта? smile

Автор: CDEater 30.11.2006, 14:19
dumb, приведённая тобой цитата говорит как раз об обратном
Master bootstrap loader code
Ключевые слова - loader CODE, то есть, это код (как правило, неизменяемый), а не область для хранения переменных, которые этим загрузчиком не используются.
В MBR мусорят дисковые дрова винды, причём только ХП (МЕ не мусорит).
То есть, к загрузчику эта переменная отношения не имеет.

Автор: dumb 30.11.2006, 14:49
к загрузчику не имеет. я имел ввиду, что пространство, отведенное под код загрузчика, система, которая этот код записывает в мбр, может использовать хоть в хвост, хоть в гриву... это, кстати, сродни твоему сохранению пароля, только ты еще и в чужой огород "прешь". smile

http://www.geocities.com/thestarman3/asm/mbr/Win2kmbr.htm smile
Цитата(чтиво)

The four bytes from offsets 1B8h through 1BBh are called the Windows 2000/XP Disk Signature or NT Drive Serial Number

Автор: CDEater 30.11.2006, 15:04
dumb, спасибо за ссылку

Автор: rsm 30.11.2006, 19:43
Цитата(CDEater @  30.11.2006,  13:47 Найти цитируемый пост)
мой поддерживает в 2.5 раза больше разделов
И только? smile

Цитата(CDEater @  30.11.2006,  13:47 Найти цитируемый пост)
каждая ОС вольна использовать MBR по своему усмотрению
Чтобы понять это достаточно вспомнить назначение MBR. После загрузки BIOS управление передается именно в MBR, а не куда-либо еще (если конечно ты не перепишешь BIOS). Соответственно, для любой ОС единственная возможность загрузиться - это прописать в MBR свой собственный код загрузки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)