Частина 19 - Основи сектора завантаження [Part 2]

Для повного змісту змісту всіх уроків, будь ласка, натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/Reverse-Engineering-Tutorial

Ми дійшли етапу, на якому починаємо інтегрувати справжній світовий код. Якщо у вас немає активного десктопного інтерфейсу Linux, я рекомендую вам встановити Virtualbox і Ubuntu на будь-якій з Windows або Mac. У мене є попередній урок, який допоможе вам пройти цей процес нижче. За якимось причиною я не можу вбудувати посилання, тому будь ласка, просто скопіюйте і вставте його в свій браузер. https://www.linkedin.com/pulse/асемблер-language-basic-malware-reverse-engineering-kevin-m-thomas-16/

Також вам потрібно встановити текстовий редактор для терміналу. Я використовую VIM. Ви знайдете посилання на встановлення цього нижче. https://www.linkedin.com/pulse/асемблер-language-basic-malware-reverse-engineering-kevin-m-thomas-17/

Крім того, вам потрібно встановити nasm, тому ви можете просто ввести:

sudo apt-get install nasm

NASM — це асемблер, який ми використовуватимемо, і ми зосередимося на інтелект-синтаксисі. Спочатку перейдіть у термінал і запустіть Vim і введіть наступне:

Пам'ятайте, щоб ввести, натисніть 'i', а потім 'esc' і 'wq', щоб перейти до командного режиму і зберегти свій file. Вище рядок просто встановлює нескінченний цикл і нічого більше не робить. Лейбл loop створюється, до якого ми просто jmp назад до нього. Цей код сам по собі компілюється, але він не працюватиме в операційній системі, оскільки не викликає так званий "чарівний номер", яким BIOS розуміє, що це кінцева частина вашого сектора завантаження. Ми більше про це розповімо в майбутніх лекціях.

Ми вводимо вище команду, припускаючи, що ви зберегли свій file у vim як bootsector.asm. Це створить бінарний file, який ми дослідимо вміст у гексовому редакторі. Гексовий редактор — це застосунок, який досліджує кожен байт даних, які були скомпільовані в file. Ми побачимо, що наші збіркові інструкції вище будуть остаточно перекладені на їхні рідні opcode значення. Процесор розуміє тільки рідні операційні коди, які просто є операційними кодами. Нижче є посилання на таблицю ідентифікації операційних кодів. Я зберіг вам зусилля від посилання на інтелект-дані, оскільки воно становить кілька тисяч сторінок і декілька томів:

http://ref.x86asm.net/coder64.html

Давайте використаємо гексовий редактор, такий як ghex і відкриємо наш бінарний file.

Ми бачимо EB FE, які є гексовими байтами, і кожна літера — це ніббл (ніббл — 4 біта або половина байта). Обидва EB FE складають два повних байти. Увага, що процесор читає з диска в зворотньому порядку байтів, тобто FE читається першою, а потім EB. Цей процес називається little endian і саме так працює x64 процесор. Якщо ви перегляньте таблицю, яку я надав посилання на яку, ви побачите, що FE відповідає INC або збільшенню на один. Це наш цикл значення. Наступного разу ви побачите, що EB означає JMP, яка є нашою інструкцією стрибка вище. Це дуже багато інформації, якщо ви новачі в збірці. Пройдіть крок за кроком і слідкуйте за мною в справжньому операційному системі Linux, а з кожним уроком ви отримаєте краще розуміння основ. Наступна неділя ми будемо продовжувати цю лекцію, додавши деякі прості дані до нашого бінарного файлу.

results matching ""

    No results matching ""