Частина 22 - Основи сектора завантаження [Part 5]
Для повного змісту змісту всіх уроків натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/Reverse-Engineering-Tutorial
Почнемо з розгляду деяких простих додатків до нашого коду. Що ми досягнемо сьогодні, це створення простого операційної системи, яка буквально нічого не робить, крім завантаження. Ми використовуватимемо QEMU як емулятор, оскільки я занадто ледачий, щоб встановити VirtualBox або VMWare, проте ви легко зможете перенести.bin в.iso, якщо ви оберіте це і завантажити з будь-якого з них.
Ми просто додаємо алгоритм заповнення на рядку 7, який просто вивчає, скільки байтів залишилося після віднімання 200h або 512, а потім заповнює залишені байти нулями. У кінці ви побачите, що ми називаємо «магічним числом», яке є 0xaa55 як це є підписом, який процесор шукає для ідентифікації сектора завантаження. Пам'ятайте, цей код знаходиться в секторі 0 під час завантаження, оскільки немає системи file, тому якщо він знайшов успішний підпис, він спробує завантажити його.
Ми будуємо бінарний файл за допомогою коду вище. Тепер давайте подивимося на код у редакторі HEX.
Як бачите, воно заповнює залишені байти до 200h або 512 нулями, як ми очікували. Нижче знаходиться залишок бінарного файлу.
Як бачите, у кінці ми маємо 55 AA. Пам'ятайте, що наш процесор є little endian, тому коли ми кодуємо його, воно було aa 55 і яке знаходиться в його мапованому форматі. Коли воно потрапляє в процесор, воно змінює порядок байтів. Це критично, щоб ви розуміли це.
Наступна неділя ми просто запустимо нашу нову операційну систему. Підтримуйте нас.