Просмотр MBR, Boot Record, параметры файловых систем

Тема в разделе "WASM.WIN32", создана пользователем ActioN, 23 май 2007.

  1. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Доброго времени суток. Мне необходимо сделать возможность "просмотра" MBR (MBR - Main Boot Record?), Boot Record и параметры файловых систем под Windows. Подскажите книгу или ссылку по этой теме. Термины мне малознакомые, даже незнаю в какую сторону копать. Поискал по форуму - нашел тему, где обмениваются ссылками на исходники доса, винды. Но это скорее всего несовсем то что надо.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Master Boot Record.
    MSDN - функция CreateFile.
    Если ты не знаешь, что такое MBR... даже не знаю что посоветовать почитать=\ ща посмотрю какие у меня книжки лежат
    угу, не то.
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Кулаков.
    А лучше статьи в нете поискать.
     
  4. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
  5. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Посмотри статью Касперски "MBR своими руками"

    http://dotfix.net/module.php?module=@6e786b36677871626f6372626d6161
     
  6. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Огромное спасибо всем, кто откликнулся. Принялся обрабатывать информацию.
     
  7. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Нашел книгу "Кулаков В. Программирование на аппаратном уровне". Страница 469 - получить параметры дисковода. Пишу:
    Код (Text):
    1. mov ah,08h
    2. xor dl,dl
    3. int 13h
    После вызова прерывание в bl должен быть код типа дисковода. Компилирую в MASM32, код выполняется, но программа во время прерывания вываливается. По отладчику видно, что прерывание не может обработаться - Access Violation ...
    Пишу тоже самое в ДОСовском ТАСМе - компилируется нормально и под отладчиком видно, что в BL правильный код типа дисковода. Скажите, что нетак? Почему откомпиленный в MASM32 код не выполняется? Может что-то дописать надо?
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    ActioN
    Масм32 в принципе не компилит для DOS, юзай старый масм 6, а лучше оставайся на тасме, под который собственно пример Кулакова и заточены или смотри в сторону fasm
     
  9. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Y_Mur
    А ТАСМ, под который заточены примеры - это ТАСМ под дос?
    В МАСМ 6 можно будет создать Win32-окно и работать с прерываниями? Если такой возможности нету, прийдется юзать ТАСМ под дос.
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    одновременно? оО
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    нет
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    имхо тасм это лучший компилятор асм для дос, он и код для масм 6 без проблем проглотит и вин окно создаст, вот только юзать прерывания из флат модели винда не позволит при любом компиляторе ;)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    я думаю, что INT 2E юзать она даст ;)
     
  14. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Да, планировал одновременно использовать и окно и прерывания. Но оказывается, в защищенном режиме такое не позволено:)
    Оказывается, можно прерывания заменить функциями DeviceIoControl и, как посоветовали раннее CreateFile. Буду в этом направлении пробовать.
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Оказывается, у Windows свои средства доступа к оборудованию, а у DOS - свои.
     
  16. mr_Infern0

    mr_Infern0 New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2007
    Сообщения:
    52
    Great
    зачем int 2Eh, щас syscall рулит
    ActioN
    а зачем тебе прерывания - юзай порты.
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Знаешь, не всегда ) Для совместимости же оставлено прерывание, и оно меня один раз выручало, когда я не мог пользоваться SYSENTER в силу обстоятельств (а точнее, я просто подменял обработчик сисентера на свой в MSR'ах для обеспечения быстрого доступа к ядерному коду на очень короткое время. INT 2E оказался единственной возможностью использовать нативные апи во время измененного SYSENTER_EIP_MSR)
     
  18. mr_Infern0

    mr_Infern0 New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2007
    Сообщения:
    52
    Great
    А в каком кстати реге лежит хендлер sysenter'а?
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    в доках интела это есть.
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    mr_Infern0
    он обычно обозначается SYSENTER_EIP_MSR, конкретное значение помнить не обязательно) ща гляну...

    SYSENTER_CS_MSR = 174h
    SYSENTER_ESP_MSR = 175h
    SYSENTER_EIP_MSR = 176h

    регистры после перехода:

    CS = SYSENTER_CS_MSR
    EIP = SYSENTER_EIP_MSR
    SS = CS + 8
    ESP = SYSENTER_ESP_MSR