Внутреннее устройство утилиты flash_n_burn

Рассмотрим подробно, каким образом утилита Fiash_n_burn Обращается на­Прямую К чипу ROM BIOS в Linux. Это наиболее важная концепция, которую необходимо освоить. Начнем с рассмотрения методов эффективного отсле­живания хода исполнения утилиты F iash_n_burn, Исследуя ее исходный код. Опытные программисты и хакеры знают, как эффективно извлечь необходи­Мую Им информацию из исходного кода. Для этого требуются следующие важные инструменты: CJ Мощный текстовый редактор, способный отслеживать ход исполнения программы путем анализа файла тегов, сгенерированного из ис­ходного кода. Файл тегов можно сгенерировать с помощью специальной программы. Файл тегов описывает взаимные связи между структурами данных и функ­циями в исходном коде. При анализе данного кода, я воспользовался тек­стовым редактором Vi, А файл тегов создал с помощью программы С tags.
Начнем с рассмотрения файла тегов. Для этого исполните программу Ctags Из корневого каталога, в котором размещен исходный код изучаемой про­граммы. Теперь мы можем проследить за логикой исполнения исходного кода с по­мощью текстового редактора Vi. Начнем с анализа главного файла утилиты f 1 aSh_n_burn — flashrom. c. Откройте его в редакторе Vi И найдите в нем функцию Main. При анализе исходного кода, мы всегда должны начинать с нахождения функции точки входа. В данном случае, такой функцией явля­ется функция Main. Теперь мы можем начать исследовать логику исходного кода. Для этого поместите курсор в код функции, чье определение вы хотите узнать, и нажмите комбинацию клавиш +. Курсор переместится в определение функции. Чтобы просмотреть определение структуры данных объекта, поместите курсор на переменную-член экземпляра и вновь нажмите комбинацию клавиш +. Курсор переместится в определение струк­туры данных объекта. Чтобы возвратиться из определения функции или структуры данных в вызывающую функцию, нажмите комбинацию клавиш +. Обратите внимание, что данные «горячие клавиши» действитель­ны только для редактора Vi; В других редакторах они могут быть иными. Текущая версия утилиты Flash_n_burn Не поддерживает южный мост VIA 596В, и мне пришлось модифицировать ее, чтобы добавить эту поддержку. Без этой возможности обращение к чипу ROM BIOS из Linux невозможно. Позже я объясню, как добавить поддержу этого моста. А сейчас давайте при­меним наши теоретические знания на практике и изучим логику исходного кода утилиты F lash_n_burn.
Точка входа утилиты находится в функции Main В файле flash rom. c. В этой функции находится вызов функции Enabie_fiash_write, Которая разрешает декодирование области адресов BIOS, прилегающей к верхней границе пер­вых 4 Гбайт адресного пространства.



Рубрика: Женский интерес

Комментарии закрыты.