BIOS в виртуальной памяти?

Тема в разделе "WASM.BEGINNERS", создана пользователем Neraverin, 8 дек 2010.

  1. Neraverin

    Neraverin New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2010
    Сообщения:
    9
    Мапиться ли BIOS в виртуальную память винды ? и если мапиться то как его там обнаружить ? Пробовал написать драйвер и использовать NTKERNELAPI функцию MmGetVirtualForPhysical. Как я понимаю BIOS лежит по физическому адресу 0xfffe0000 (размер моего BIOS 128Kb), но на выходе всегда получаю 0. зы я только начинающий системный программист, так что если у кого то есть ссылки на документацию по этой теме то с радостью ознакомлюсь
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
  3. Neraverin

    Neraverin New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2010
    Сообщения:
    9
    Спасибо за сслыку, буду разбираться. Уточню еще раз, мне не надо работать с функциями BIOS или получать какой то доступ к внутренним его частям. Мне лишь надо знать находится ли он в виртаульном адресном пространстве винды или нет.
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Neraverin
    А как только узнаете, что BIOS находится в виртаульном адресном пространстве винды, что будете делать? Наверное, полезете в его внутренние части. Пинчакко раньше часто заходил на WASM.RU\forum в раздел WASM.ENGLISH если захотите можно связаться...
     
  5. Neraverin

    Neraverin New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2010
    Сообщения:
    9
    Дело в том, что сама Windows у меня находится на виртуальной машине.BIOS виртуальный, но винда работает с ним так же как и с ностоящим. В BIOS я могу и так внести любые изменения, которые захочу. Меня интересует сама возможность перехода в BIOS и выполнения там заранее размещенного кода.
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Neraverin
    На сколько я помню, BIOS размещается в памяти Read-Only (ROM или ПЗУ) и при следующей перезагрузке все изменения "внесенные в BIOS" в ОЗУ сотрутся, кроме того настоящий BIOS содержится в упакованном виде, каким это образом туда вы решили внести изменения и "заранее размещать код"? Странный какой-то "начинающий системный программист" может быть вам в раздел WASM.VIROLOGY?
     
  7. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Mikl___
    Нихрена, из ос, примяком можно писать в чип bios.
    Кстати, в книге Салихана это хорошо описано и дан код.
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    featurelles
    там вроде перемычка была, чтобы не писали? Хорошо, BIOS размещался в ROM. Честно говоря, я давно читал "Руководство по исследованию кода БИОС" многое не помню :dntknw:
     
  9. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Mikl___
    Я также как и вы) ничего не помню.. учил это года три назад (....
    Вообще это интересная тема.

    Кстати, есть вопрос. Как "Вы" (кто угодно) тестите код для bios для разных материнок?
     
  10. vaxvax

    vaxvax New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    2
    я знаю что BIOS размещён в памяти Read-Only это точно ну а далее по известной схеме.
     
  11. Neraverin

    Neraverin New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2010
    Сообщения:
    9
    Еще одно пояснение. Есть винда, которая крутится под qemu-kvm(виртуальная машина с аппаратной виртуализацией под linux). Виртуальная машина предоставляет винде виртуальный bios(seabios исходные коды его имеются). Мне не так важно read only там или не read only. в bios будет дописан некоторый код. Задача выполнения этого кода сводится к поиску bios в виртуальном пространстве windows.
     
  12. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Neraverin
    Так какой вопрос то) я не понял.

    "BIOS. Дизассемблирование, модификация, программирование". Не помню какая страница.(лень смотреть)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А зачем ты ищешь уже отмапленные проэкции?
    Создай свою. MmMapIoSpace() позволяет драйверу спроецировать себе в ядро определенный участок физической памяти, базовый адрес и размер задается.
    И пусть не смущает, что к одной памяти создано несколько проекций (до тех пор, пока не придется синхронизировать доступ к общим переменных/объектам/...)
     
  14. Neraverin

    Neraverin New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2010
    Сообщения:
    9
    Проблема в том, что если проекция уже есть, то эту проекцию проще найти из гипервизора, чем запустить из гипервизора функцию ядра, сразу же после загрузки этого ядра, которое опять же прийдется искать и парсить для нахождения этой функции. Вся фишка как раз в том, чтобы убрать драйвер из винды и не связываться с подписью драйверов под x64
     
  15. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Neraverin
    смотри здесь, но не уверен что будет работать под х64
     
  16. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Оригинальный образ BIOSа из верхних адресов после загрузки для работы не нужен и никуда не отображается. Рекомендую посмотреть на копию в нижних адресах, F0000 - FFFFF, с ней шансов больше.
     
  17. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Также неплохо освежить знания о shadow memory и как (или если) контроллер памяти отсылает запросы к LPC/FWH-памяти, исходя из диапазонов адресов.