BIOS & IDA

Тема в разделе "WASM.RESEARCH", создана пользователем punxer, 23 окт 2009.

  1. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    seg000:E001FFF7 jmp far ptr 0F000h:0E83Bh
    Почему эта инструкция находится тут а не по смещению F000:FFF0h. Грузил с базой
    F000FFFFh и смещением E000FFFF, пробовал также грузить так: база F000h и смещение E000h. Результат не лучше.
    IDA 5.2.
    Поделитесь скриптами пожалуйсто для анализа бивисов.
     
  2. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Phoenix BIOS.
     
  3. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Вроде отпало пока. Загрузил по_умолчанию, но там на точке входа не far jmp, а jmp loc_E7C8, где уже:
    Код (Text):
    1. seg000:E7C8 loc_E7C8:                               ; CODE XREF: seg000:FFF0j
    2. seg000:E7C8                 cli
    3. seg000:E7C9                 shl     edx, 10h
    4. seg000:E7CD                 mov     fs, ax
    5. seg000:E7CF                 ror     eax, 10h
    6. seg000:E7D3                 mov     gs, ax
    7. seg000:E7D5                 jmp     $+3
    8. seg000:E7D8                 mov     si, 0F000h
    9. seg000:E7DB                 mov     ds, si
    10. seg000:E7DD                 assume ds:nothing
    11. seg000:E7DD                 mov     si, 0FFF0h
    12. seg000:E7E0                 mov     bl, [si]
    13. seg000:E7E2                 cmp     bl, 0E9h ; 'щ'
    14. seg000:E7E5                 jnz     short loc_E7EC
    15. seg000:E7E7                 jmp     far ptr 0F000h:0E7F1h
    16. seg000:E7EC ; ---------------------------------------------------------------------------
    17. seg000:E7EC
    18. seg000:E7EC loc_E7EC:                               ; CODE XREF: seg000:E7E5j
    19. seg000:E7EC                 jmp     far ptr 0F000h:0E05B
    Интересно...
     
  4. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Куета какаято.
    Гружу в иду:
    Тот самы первый аттач с настройками:
    база F000h и смещение E000h. Почему не по адресу F000:FFF0h не точка входа.
     
  5. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Что то я не так делаю. Прсто когда с 0 сегментом и смещение грузишь неудобно ходить в иде по джампам, так как там пишется F000:траляля, а если грузишь типа как описано, то точки входа нет на месте, там 0x0. Как это дело настроить правильно?
     
  6. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Ну где вы diamond и apple_rom
     
  7. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    В чём проблема я догнал. Размер этого бутблока 64кб. Как его грузонуть так чтобы ида понимала jmp xxxx:xxxx, (все такие прыжки что я идел пока, были в локальном сегменте.)
     
  8. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Ещё такой вопрос))) Да заустал я знаю. ))
    seg000:E7E7 jmp far ptr 0F000h:0E7F1h


    Так почему ида на распознаёт прыжок. Короче перейти не получается мышью. Как изменить данные сегмента чтоб место перехода было известно иде.
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а книжки одного всем известного автора почитать не пробовал? ну или цикл статей его?
     
  10. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Я думаю ты имешь ввиду криса...пробовал давно как литературу и досуг, теперь пробую как тех. лит.))
    n0name судя по отсутствию ответов ты тоже не пробовал...
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Должно быть: база F000, смещение 0. Откуда вообще взялось значение E000, непонятно.
     
  12. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    http://www.rom.by/book/Issledovanie_Butbloka
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    http://www.wasm.ru/forum/viewtopic.php?id=9740
     
  14. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Ба, apple_rom тоже здесь!? Не знал...
     
  15. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    попробуй просто скачать исходники BIOS. Они были в какойто теме на WASM.
    И почитай книгу "BIOS Дизассемблирование моделирование программирование" там много интересного.
     
  16. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    >Так почему ида на распознаёт прыжок.

    IDA не может знать, что находится по адресу '0F000h:0E7F1h' в момент выполнения. Уже упомянутый известный автор предлагает ставить на этой строчке комментарий с целевым адресом. Переход по нему (нажатие Enter) будет работать. В некоторых случаях приходится писать несколько адресов (т.е. все значения переменной).
     
  17. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Ну не надо так плохо об интеллекте IDA отзываться... это она знает, просто нужно добиться того, чтобы файл, загруженный в базу, располагался так же, как и при настоящей работе - иначе F000:E7F1 указывает в никуда.
    Mika0x65: а Вы, наверное, спутали прямой jmp far с косвенным jmp xxx ptr [yyy] (у которого, кстати, нет формы [F000:E7F1]).
     
  18. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    diamond
    Ой, весьма вероятно, часто на глаз путаю.

    В смысле, нет? 0xEA -- смещение:сегмент кодируются в самой инструкции, 0xFF /5 -- modrm кодирует адрес "дальнего" указателя.

    Если у punxer 0xEA, то IDA посчитает. Иначе придется самому.
     
  19. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    diamond
    А, понял о чем речь.

    Черт, как тяжело без редактирования :dntknw:.
     
  20. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    diamond
    И что ввести в сегмент : смещение для сего?
    Ещё не понимаю хачем там межсегментный прыжок в одном сегменте?