Рассмотрим подробно, каким образом утилита 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 Гбайт адресного пространства.
Рубрика: Женский интерес