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

Discussion in 'WASM.BEGINNERS' started by Neraverin, Dec 8, 2010.

  1. Neraverin

    Neraverin New Member

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

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
  3. Neraverin

    Neraverin New Member

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

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    Neraverin
    А как только узнаете, что BIOS находится в виртаульном адресном пространстве винды, что будете делать? Наверное, полезете в его внутренние части. Пинчакко раньше часто заходил на WASM.RU\forum в раздел WASM.ENGLISH если захотите можно связаться...
     
  5. Neraverin

    Neraverin New Member

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

    Mikl___ Супермодератор Staff Member

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

    featurelles New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2009
    Messages:
    562
    Mikl___
    Нихрена, из ос, примяком можно писать в чип bios.
    Кстати, в книге Салихана это хорошо описано и дан код.
     
  8. Mikl___

    Mikl___ Супермодератор Staff Member

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

    featurelles New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2009
    Messages:
    562
    Mikl___
    Я также как и вы) ничего не помню.. учил это года три назад (....
    Вообще это интересная тема.

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

    vaxvax New Member

    Blog Posts:
    0
    Joined:
    Nov 28, 2010
    Messages:
    2
    я знаю что BIOS размещён в памяти Read-Only это точно ну а далее по известной схеме.
     
  11. Neraverin

    Neraverin New Member

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

    featurelles New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2009
    Messages:
    562
    Neraverin
    Так какой вопрос то) я не понял.

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

    wasm_test wasm test user

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

    Neraverin New Member

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

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    Neraverin
    смотри здесь, но не уверен что будет работать под х64
     
  16. diamond

    diamond New Member

    Blog Posts:
    0
    Joined:
    May 21, 2004
    Messages:
    507
    Location:
    Russia
    Оригинальный образ BIOSа из верхних адресов после загрузки для работы не нужен и никуда не отображается. Рекомендую посмотреть на копию в нижних адресах, F0000 - FFFFF, с ней шансов больше.
     
  17. baldr

    baldr New Member

    Blog Posts:
    0
    Joined:
    Apr 29, 2010
    Messages:
    327
    Также неплохо освежить знания о shadow memory и как (или если) контроллер памяти отсылает запросы к LPC/FWH-памяти, исходя из диапазонов адресов.