Исследование BIOS

Тема в разделе "WASM.RESEARCH", создана пользователем blueboar, 15 мар 2008.

  1. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Вопрос по BIOSам

    Зачем во всех BIOS'ах в начале BOOTBLOCK'а идет переход на подпрограмму из двух строк - XOR AL,AL/RET - а потом проверяется - ноль или не ноль??? В каком-то случае может быть не ноль?
     
  2. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Во-первых, не надо обобщать. BIOSов много, и они все очень разные.
    Такое может возникнуть, например, из-за того, что есть специальная версия для отладки, и в ней основной код такой же, но некоторые процедуры занимаются логгингом, вопросами всякими к программисту и т.п., а в финальном варианте эти процедуры ничего не делают, возвращают всегда 0 и т.п.
     
  3. ktoto

    ktoto New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2008
    Сообщения:
    21
    diamond
    думаю ты прав.
    скорее всего во время отладки делали ловушку. А потом резанули но не до конца. Думаю в биосе полным полно мусорных мест.
     
  4. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Вряд ли - он проверяет на 0, а потом делится на две ветки - и обе длинные - и обе чего-то делают. Могу файл прикрепить если кому интересно...
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    может проверка регистров? хотя она обычно отдельно..
    зы. файл давай =)
     
  6. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Файл http://bookwave.narod.ru/bios.bin

    Искать так

    F000:FFF0 --> E05B --> E7A8 --> E7CA --> E067

    Там происходит переход на F769, где сбрасывается AL, а потом
    на адресе E06f стоит JNZ и проверяет, ноль получился или не 0.
    Если 0 выполняетя подпрограмма EB1A, если нет - не выполняется.
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Надо весь биос дизассемблировать. Там может идти запись в эту ячейку.
    Может быть так первый проход идет выполнение системного кода, всместо хоr стоит jmp короткий. После выполнения кода заместо jmp записывается xor - заглушка. И код небудет выполняться. Почему может выполняться повторно код? К примеру позапросу или по ресету. Т.е надо проинициировать систему только в мамент старта, а при перезагрузки нетрогать.

    Это только предположения. Просто в биосе нечто похожее уже видел.
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Судя по следующиму коду, там идет запись пост кодов тут идет тестирование Shadow Ram. Но вот где идет запись в эту ячейку чето невижу.

    Залез в исходники там следующии строчки.
    Код (Text):
    1. ;[]==============================================================[]
    2. ;Check C0000-EFFFF shadow allowed or not
    3. ;   Some chipset's shadow is dependent on F0000 shadowing, i.e.
    4. ;   If F0000 was not shadowed, all other segment of ROM can't be
    5. ;   shadowed.
    6. ;Input : none
    7. ;Output: zero set - shadow allow
    8. ;    zero not set - shdow not allow
    9. ;[]==============================================================[]
    10.         public  Ct_Shadow_Alone_Check
    11. Ct_Shadow_Alone_Check   proc    near
    12.         xor al,al
    13.         ret
    14. Ct_Shadow_Alone_Check   endp