Автор: example , 12 февраля 2014
Добрый день.

И у меня во время работы с UEFI возник вопрос.

Я не так давно занимаюсь изучением дизассемблировния

Работаю в данный момент с BIOS - "AmericanMegatrendsInc.-P09ABE". (ссылка для скачивания)

Работаю в IDA 6.1



Вот hex код:



В начале я понимаю, что задается начальные данные, количество блоков их размер и т.д.

Все Post-коды задаются изначально через порт 80.

Подскажите, как в HEX найти начало этих Post кодов, какой последовательностью она отображается и с чего вообще там начать смотреть, чтобы увидеть эти посты?

Спасибо.

Перенес в Песочницу.
maco
Содержимое данного поля является приватным и не предназначено для показа.

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

maco

12 лет назад

[OFF]Я в общем-то издеваюсь, но если вы не поняли совсем простых примеров, которые вам выданы выше, то вам сначала нужно все таки разобраться с примерами (можно по ним задать конкретные вопросы о непонятных местах), а уже потом строить свои забавные предположения :D.
И попытка поиска по сигнатурам выглядит, мягко говоря, странно при наличии нормального инструмента.[/OFF]
Я очень рад, что вы издеваетесь. Можете объяснить хотя бы один пример, буду крайне признателен

maco

12 лет назад

[OFF]Что конкретно в примере(ах) нужно объяснять?

P.S. Интересно, когда автор догадается, зачем существует выделение отдельных слов в предложении :lol:.[/OFF]
Я дизассемблирую например модуль sub_F0BCA



И что можно сказать по этому коду, что именно тут происходит?
В этом модуле загружаются, какие нить посты, или они в другом файле описываются?

maco

12 лет назад

[OFF]
Я дизассемблирую например модуль sub_F0BCA
Идиотский вопрос - зачем вы его дизассемблируете :lol:?
Я рекомендую пользоваться глазами и серым веществом.[/OFF]
а через что его открыть?

maco

12 лет назад

[OFF]Notepad, for example :D.[/OFF]
Кхем.
1) распакуйте все модули
2) скачайте fasm.exe
3) скомпилируйте строчку out 80h, al скачаным fasm-ом ( в бинарник, никаких com/exe)
4) откройте бинарник и поищите найденую там последовательность байт во всех распакованных модулях.
5) дизассемблируйте каждое место, которое начинается с этой последовательности байт, если дальнейшие команды не выглядят полной фигнёй ( понимание того, что значит "полная фигня" прийдет в процессе дизассемблирования ), то смотрите по коду - где в этот злосчастный al заносится пост-код. Если полная фигня - то значит дизассемблировали данные/кусок другой инструкции.

П.С. Почитайте книжку "BIOS. Дизассемблирование, модификация, программирование" или топики её автора на этом форуме. Про EFI и AMI там мало что сказано, но базовые знания она вам даст.
П.П.С. Также полезно почитать книжку Intel - Beyond BIOS и просмотреть Intel EDK
П.П.П.С. Поищите в гугле скандал об утечке ключей у AMI, обычно в обсуждениях там вылезают какието ссылки на какоето aptio которое, кажется, в каких-то исходных кодах там присутствует. Что это такое я не знаю, но говорят, что это как-то связано с компьютерами. Вроде оно может помочь в понимании.
В утекших UEFI-исходниках нет вывода пост-кодов. Т.е. сам код/функции вывода есть, но он нигде не вызывается.
Я, правда, давно и краем глаза смотрел, но впечатление у меня осталось именно такое.

maco

12 лет назад

[OFF]Еще раз на всякий случай повторю:
попытка поиска по сигнатурам выглядит, мягко говоря, странно при наличии нормального инструмента.


Для примера можно поглядеть в область bootblock'а той прошивки, на которую приводил ссылку автор. Адрес - F000:FDBC (для простоты указываю адрес в сегментной модели 8086 :D, хотя в реальности используется другая модель). С этой точки начинается выдача первого POST-кода для данной прошивки (причем в эту точку производится безусловный переход, т.е. по адресу F000:FDBB ничего полезного с точки зрения этого POST-кода нет).
Последующий код легко дизассемблируется двумя вариантами: правильным и неправильным :D. Можно применять метод "научного тыка", конечно же :), а можно нормально дизассемблировать от штатной точки входа и понять, в каком пространстве/режиме/итд происходит действие.[/OFF]