Кто-нибудь ковырялся в MBR? Как регистр ch приравнивается к 80-ти?

Тема в разделе "WASM.BEGINNERS", создана пользователем amvoz, 22 июл 2024.

  1. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    197
    да зачем мне лазить по непонятным ссылкам, когда я выше выложил свой мбр из реальной машины.
    если у тебя одинаковый, ну и ладно.. ищи проблему дальше.
     
  2. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    разные версии ОС- разные MBR. Всё просто на самом деле.
     
  3. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    197
    причём тут ос, когда мбр описывает разметку самого диска, а не системы?
    если есть любой рабочий хард, то через редактор HxD копируется LBA(0) и всё.
     
  4. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Вот он и описывает по-разному. Таблицу разделов, кстати, да, одинаково описывает. А вот код, как видишь, нет.
    Ты же сам видишь, что по-разному.
     
  5. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    197
    хрень какая-то...
    мбр создаёт софт, который делит твой диск на разделы, типа PartitionMagiс, причём здесь ос? Короче иди дальше читать Рихтера..
     
  6. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    250
    Marylin, там 446 байт кода, которые с ОС поставляются, partition table там уже может быть всякими тулзами записана
    --- Сообщение объединено, 25 июл 2024 ---
    Ну можно конечно свой код в MBR накатить или GRUB какой, но это уже...
     
  7. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    чё за фантазии веснухина? Не, ну серьёзно. Таблица разделов- да, создаётся при разбиении разделов, но код? Ты прочёл это или где? Или что? А так получается, ты сам придумываешь на ходу.
    ...Не упрямься, прими как данность- нет ничего постоянного в этом мире и тем более MBR. При чём тут ОС- ну у одной оси так, у другой эдак, вот при чём.
    сейчас он спросит при чём тут ОС, с него станется.
     
    Win32Api нравится это.
  8. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.623
    Адрес:
    Russia
    как вам писали
    DL = drive (bit 7 set for hard disk)
    ну и википедия https://en.wikipedia.org/wiki/INT_13H говорит что нумерация жестких дисков начинается с 80h, а флаг загрузочного раздела на сколько я понимаю на том же месте чтоб организовать дополнительную защиту от дурака
    Код (Text):
    1. 00000000: 33c0  XOR AX, AX
    2. 00000002: 8ed0  MOV SS, AX
    3. 00000004: bc007c  MOV SP, 0x7c00
    4. 00000007: fb  STI
    5. 00000008: 50  PUSH AX
    6. 00000009: 07  POP ES
    7. 0000000a: 50  PUSH AX
    8. 0000000b: 1f  POP DS
    9. 0000000c: fc  CLD
    10. 0000000d: be1b7c  MOV SI, 0x7c1b
    11. 00000010: bf1b06  MOV DI, 0x61b
    12. 00000013: 50  PUSH AX
    13. 00000014: 57  PUSH DI
    14. 00000015: b9e501  MOV CX, 0x1e5
    15. 00000018: f3a4  REP MOVSB
    16. 0000001a: cb  RETF
    куда после retf передается управление и как оно попадает сюда я не выяснил, но далее до проблемного места идет так
    Код (Text):
    1. 0000001b: bdbe07  MOV BP, 0x7be
    2. 0000001e: b104  MOV CL, 0x4
    3. 00000020: 386e00  CMP [BP+0x0], CH
    4. 00000023: 7c09  JL 0x2e
    5. ......
    6. 0000002e: 8bf5  MOV SI, BP
    7. 00000030: 83c610  ADD SI, 0x10
    8. 00000033: 49  DEC CX
    9. 00000034: 7419  JZ 0x4f
    10. ....
    11. 0000004f: 884e10  MOV [BP+0x10], CL
    12. 00000052: e84600  CALL 0x9b
    13. ......
    14. 0000009b: bf0500  MOV DI, 0x5
    15. 0000009e: 8a5600  MOV DL, [BP+0x0]
    16. 000000a1: b408  MOV AH, 0x8
    17. 000000a3: cd13  INT 0x13
    18. 000000a5: 7223  JB 0xca
    где находится кнопка для установки тегов кода я не нашел, руками писать в падлу
     
  9. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    нельзя ли объяснить?
    Пока же ситуация видится такой. MBR зачем-то запрашивает данные диска номер 0x80 (Зачем? Почему? Для чего? Этот диск может подключен себе и лежит потихоньку- но нет же, надо о нём все знать) И не было бы этого вопроса- чёрт с ним, охота ей знать зачем-то про первый диск, пусть знает, но 0x80 берётся не зашитым в код, а как флаг активности раздела.
    Ничё не понятно.

    Тут, где код вроде дизассемблирован:
    https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm
    Код (Text):
    1. 069E 8A5600        MOV     DL,[BP+00]      ;| 80 -> DL (First Hard Drive)
    2. 06A1 B408          MOV     AH,08           ;|   INT 13, Function 08
    3. 06A3 CD13          INT     13              ;| "Get Drive Parameters"

    Всё объяснение.
     
  10. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.623
    Адрес:
    Russia

    в таблице сказано что для ntfs это всегда так ... видимо изначально хотели сделать какие-то настройки а потом забили ....
    24h4 Bytes80008000First byte: 80h is the drive number !An NTFS OS always fills these bytes with: "80008000"
    According to most documentation, this area is not supposed to be used by NTFS, but after examining the code in the Boot Record, it seems clear that the first byte of these four bytes is used to set the drive number! (See offsets: 7C7B and 7CAF).
     
  11. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    197
    какой (козе в трещину) веснухин?
    Если-бы ты прочитал хоть одну книжку, то наверняка узнал-бы о такой/простой истине.
    Ещё раз говорю, что ос не имеет отношения к мбр диска. При установке ОС сохраняет свой загрузчик в первый сектор лог.раздела диска с которого грузится (называется VBR), а код из мбр просто по флагу 80h находит этот активный раздел на выбранном в биос диске, и считывает его лоадер в память. Больше никаких требований к загрузчику в мбр не предъявляется, хотя софт может внести незначительные улучшения.

    Если в мбр нет загрузчика (а только таблица разделов), значит данный физ.диск имеет разметку GPT и загрузчик ОС будет лежать в одном из сл.секторов. Разметь диск как GPT и накатив на него любую систему проверь, будет-ли у него 446-байт кода загрузчика в мбр. Это говорит о том, что код мбр не ходит с системой.

    Ну или другой пример..
    Пусть на одном диске MBR три раздела с установленными системами Win-7/8/10.
    Какая из этих ос должна сделать запись в код загрузчика мбр? Ты-же умный такой.. ответь.
     
  12. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.623
    Адрес:
    Russia
    Ну это не совсем истина ... у каждой ОС есть свой вариант MBR который она может туда записать. Да, существуют универсальные загрузчики типа GRUB, но даже fdisk от dos может перезаписать его к иксам , игрекам и ямам. ТС вроде как изучает тот экземпляр MBR, что записала windows xp.