ошибка в MBR

Тема в разделе "WASM.ASSEMBLER", создана пользователем FaNt0m, 1 авг 2008.

  1. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Забудь про защищенный режим, я пошутил :)
     
  2. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    Этот код слишком большой и поэтому затирает таблицу разделов на первом секторе..
     
  3. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    Здесь святая-святых - жесткий диск, а он с шуточками :)
     
  4. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Какой код?
     
  5. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    Ну, ты мне предложил записать содержимое сектора 9318481h на 1 сектор hDD...
     
  6. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Я тебе предложил загрузить вместо сектора 9318480h сектор 9318481h и передать ему управление.
     
  7. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    В ВинХексе нажимаю: перейти к сектору, ввожу 9318480р(в dec) - попадаю на сектор с превыми байтами EB5290h(т е jump), потом идет сигнатура NTFS - это точно бут-рекорд. А сектор 9318481h вообще с нескольких нулей начинается...
     
  8. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    Phantom_84:
    А почему про защищенный режим ты пошутил?
     
  9. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Вот фрагмент бутсектора FAT32 диска, отформатированного из-под WinXP:
    Код (Text):
    1. 000000A4: 668B461C                       mov         eax,[bp][01C]
    2. 000000A8: 6683C00C                       add         eax,00C
    3. 000000AC: BB0080                         mov         bx,08000 ;'А '
    4. 000000AF: B90100                         mov         cx,1
    5. 000000B2: E82B00                         call        0000000E0 --↓2
    6. 000000B5: E94803                         jmp         000000400 --↓3
    Вот фрагмент бутсектора FAT32 диска, отформатированного из-под Win98:
    Код (Text):
    1. 000000BE: 8B461C                         mov         ax,[bp][01C]
    2. 000000C1: 8B561E                         mov         dx,[bp][01E]
    3. 000000C4: B90300                         mov         cx,3
    4. 000000C7: 49                             dec         cx
    5. 000000C8: 40                             inc         ax
    6. 000000C9: 7501                           jnz         0000000CC --↓1
    7. 000000CB: 42                             inc         dx
    8. 000000CC: BB007E                        1mov         bx,07E00 ;'~ '
    9. 000000CF: E85F00                         call        000000131 --↓2
    10. 000000D2: 7326                           jnc         0000000FA --↓3
    В обоих случаях подгружается второй сектор загрузчика, и обращение идёт относительно [dword +1C].
    То, что [+1C] на FAT32-томах расширенного раздела - относительное значение, видно любым дисковым редактором (я использую в этих целях hiew). Следовательно, с FAT32-тома в расширенном разделе винду загрузить просто так не удастся. Когда мне очень хотелось таки загрузить DOS с такого раздела, пришлось писать дополнительный код, который собственно загружает бутсектор и меняет в памяти [+1C] на абсолютное значение - тогда работает.
    Может, там NTFS? Или загрузчик перед бутсектором умный?
     
  10. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Не, с NTFS такая же проблема, там тоже относительно [+1C] адресация идёт, только общий размер загрузчика уже не два сектора, а 16.
    *задумчиво* у меня XP стоит на расширенном G:, но бутсектор G: вообще не вызывается, поскольку загрузка идёт из c:\ntldr и c:\boot.ini.
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    FaNt0m
    А попробуй перед передачей управления сделать
    Код (Text):
    1. mov dword [7C1Ch], 9318480h
    Ничего не гарантирую, но вдруг что-нибудь да выйдет?
     
  12. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    diamond
    7C1Ch - это смещение количества скрытых секторов на лог диске.
    З.Ы. И джамп в начале сектора тогда для кого?
     
  13. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Не, я гружу именно через бут-сектор тома в расширенном разделе. А сам тип расширенного раздела какой, 0Fh?
     
  14. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    нет, 07h. +он является примари!
     
  15. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    FaNt0m
    Не совсем. Это смещение количества скрытых секторов перед логическим диском.
    Это загрузчик перепрыгивает данные, чтобы не исполнять их как код. Я не предлагаю изменить код, только скорректировать данные для этого кода так, чтобы привести их в соответствие с ожиданиями загрузчика.
     
  16. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    Вот, прикреплю дамп первого сектора.. мож кто посмотрит...
     
  17. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Мы же вроде определились, что если и можно что-то запустить, то это 9318481h! Если 9318480h - это EPR, то там в начале наверняка одни нули!
     
  18. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Точно, primary. Тогда всё, что я написал про extended, к делу отношения не имеет.
    Уточняющий вопрос: всё это происходит на основном, первом жёстком диске?
     
  19. FaNt0m

    FaNt0m New Member

    Публикаций:
    0
    Регистрация:
    19 май 2008
    Сообщения:
    41
    Phantom_84

    Для недоверчивых прикрепляю скрин окна...
     
  20. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Там первичный раздел NTFS лежит дальше, чем расширенный! 9318480h - это вообще номер бут-сектора NTFS-раздела!