int 12h

Тема в разделе "WASM.OS.DEVEL", создана пользователем XshStasX, 12 апр 2011.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    размер памяти который возвращает int 12h находиться по адресу 0000:413h.
    означает ли это что если я уменьшу это значение то ОС не сможет сможет(не сможет получить ее через прерывания или еще - что то) ?
    Суть вот в чем, нужно остаться в памяти после загрузки ОС, вот и ищу место где это можно сделать.
     
  2. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    INT 12H возвращает AX = число килобайт памяти в PC. Это то же значение, которое хранится в 0:413. Оно не включает переключаемую расширенную память (см. Спецификацию Expanded-памяти ). Оно также не включает "extended-память" с адресами выше 1 мегабайта. См. функции EMM и INT 15H для PC, это значение берется из переключателей. Машины PCjr, XT и большинство им подобных выполняют просмотр памяти во время POST , чтобы определить объем памяти. AT считывает свою CMOS-память , чтобы определить объем RAM.
    Использовать надо int 15h AH = e820, там правишь таблицу и будет тебе счастье)
     
  3. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Какая ОС? Если ОС реального режима, то возможно. Если ОС защищенного режима, то вероятность меньше, а перехватить управление вообще почти невозможно.

    Тут есть еще один тонкий момент. Если ОС защищенного режима определяет положение EBDA по вершине доступной базовой памяти, а не по адресу EBDA, хранящемуся в BDA, то маскирование кода в указанном месте может повлиять на работоспособность загружаемой ОС. Короче для ОС защищенного режима это делать рисковано.
     
  4. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Интересно, как вы себе это представляете?
     
  5. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    Многие бут менеджеры делают то, что хотите вы.
    Посмотрите исходники PLOP, GRUB, SysLinux.
     
  6. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Phantom_84
    ОС виндовс.
    Управление планирую получить путем перехвата int 13h и изменения кода.

    Что это такое ?..

    drem1lin
    Я так понимаю ты имеешь ввиду перехват int 15h ?
     
  7. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    винда не использует биос. и у нее свои прерывания
     
  8. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    abcd008
    при загрузки ntldr использует int 13h
     
  9. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    Только на этапе загрузки ядра. Дальше не использует.
     
  10. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    устанавливается свой обработчик, который возвращает подложную таблицу. Я таким образом у винды 40 метров отрезал, только тут надо решить задачу хранения нового обработчика и подложной таблицы