Главная страница
Навигация по странице:

  • Команды в консоли команд

  • Команды отладки

  • 3. 5Исследование готовых файлов 5


    Скачать 438.97 Kb.
    Название3. 5Исследование готовых файлов 5
    Дата12.09.2018
    Размер438.97 Kb.
    Формат файлаdocx
    Имя файла1. MiniOS doc.docx
    ТипДокументы
    #50456
    страница2 из 6
    1   2   3   4   5   6

    3.4Основные инструменты

    3.4.1Виртуальная машина Qemu


    Управление

    Команды в консоли команд

    • x/152hx 0x7c00 - просмотр 152 слов виртуальной памяти

    • xp/152hx 0x7c00 – просмотр 152 слов физической памяти

    • pmemsave 0 0xffffff file_name – сохранение дампа памяти в файл

    • info registers - вывод полного содержимого внутренних регистров машины, включая скрытое состояние селекторов сегментов, локальную (LDT) и глобальную (GDT) таблицы дескрипторов и регистр задачи. Виртуальный ЦП считывает скрытое состояние из GDT/LDT, когда загружает селектор сегмента. Ниже приведено содержимое CS при работе ядра JOS и значения каждого поля: CS =0008 10000000 ffffffff 10cf9a00 DPL=0 CS32 [-R-] CS =0008 Видимая часть селектора сегмента. Значение селектора сегмента равно 0x8. Это означает, что мы ссылаемся на глобальную таблицу дескрипторов (0x8&4=0), текущий уровень привилегий (CPL, current privilege level) равен 0x8&3=0. 10000000 Начало этого сегмента. Linear address = logical address + 0x10000000. ffffffff Граница этого сегмента. Линейные адреса более 0xffffffff вызовут исключение «нарушение границы сегмента». 10cf9a00 Флаги для этого сегмента, значения которых QEMU декодирует в следующих нескольких полях. DPL=0 Уровень привилегий для этого сегмента. Только процесс с уровнем 0 может загрузить этот сегмент. CS32 Это 32-разрядный сегмент кода. Другие возможные значения: DS (сегмент данных) и LDT (локальная таблица дескрипторов). [-R-]

    • system_reset — перезапуск исполняемой программы

    Запуск загрузочной флешки с именем устройства sdb в виртуальной машине:
    sudo chown username /dev/sdb
    qemu-system-i386 -hda /dev/sdb

    Документация по QEMU
    http://www.opennet.ru/docs/RUS/qemu_doc/
        1. Отладчик GDB


    Отладчик использует скрипт инициализации .gdbinit, в нём можно отредактировать необходимые параметры.

    Команды отладки

    • с – continue

    • n – next

    • s – into

    • p – вывод значения переменной

    • b main – точка останова на имени функции

    • b *0x7C00 – точка остановка на адресе

    • watch *0xb8000 – точка останова на изменение памяти по адресу

    • x /2 $pc – посмотреть три следующие инструкции

    • si – выполнить одну инструкцию

    Инструкция:
    http://server.179.ru/tasks/gdb/

    3.5Исследование готовых файлов


    • Дизассемблирование исполняемого файла
      objdump MiniOS.bin.dbg -D > MiniOS.txt

    • Просмотр файла в hex
      hexdump -n 512 -s 10

    • Просмотр “program header” исполняемого файла
      readelf -l

    • Просмотр “section header” исполняемого файла
      readelf -S

    4.Файлы проекта

    4.1Список файлов


    • Makefile
      основной makefile, автоматизирует создание загрузочного образа hdd.img
      см. Сборка загрузочного образа (hdd.img)

    • hdd.img
      загрузочный образ MiniOS
      см. Error: Reference source not found

    • run_qemu.sh
      запуск загрузочного образа hdd.img в виртуальной машине Qemu

    • run_qemu_dbg.sh
      запуск загрузочного образа hdd.img в виртуальной машине Qemu c отладчиком GDB

    • to_flash.sh
      запись загрузочного образа hdd.img на USB Flash

    • .gdbinit
      скрипт инициализации отладчика GDB

    4.1.1Папка grub/


    Файлы загрузчика

    • fat_stage1_5
      промежуточная часть, содержит драйвер файловой системы fat32

    • stage1
      начальная часть, записывается в MBR

    • stage2
      основная часть

    • menu.lst
      файл конфигурации загрузчика

    4.1.2Папка src/


    Исходный код ядра

    • MiniOS.bin
      исполняемый файл ядра
      см. Исследование исполняемого файла MiniOS

    • MiniOS.bin.dbg
      исполняемый файл ядра с отладочной информацией для dbg

    • Makefile
      производит компиляцию исходных кодов ядра
      см. Компиляция исходных кодов ядра

    • link.ld
      скрипт компоновщика
      описан: Скрипт компоновщика

    • common.h

    • common.c

    • descriptor_tables.h

    • descriptor_tables.c

    • isr.h

    • isr.c

    • monitor.h

    • monitor.c

    • timer.c

    • multiboot.h

    • timer.h

    • main.c

    • boot.s

    • gdt.s

    • interrupt.s
    1   2   3   4   5   6


    написать администратору сайта