Частина 27 - x64 Збірка [Part 1]

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

Сьогодні ми починаємо вивчати справжні x64 основи кодування. У наступних декількох тижнів я створю дуже прості приклади, щоб ви могли зрозуміти x64 архітектуру. Почнемо з базового блоку коду:

Ми починаємо з оголошення секції .data, в якій зберігаються всі наші глобальні дані. Якщо ми мали б рядок або будь-яку іншу форму закодованої даних, вони потрапили б в цей блок. У нашому прикладі ми залишимо його порожнім.

Секція .text оголошує місце початку програми. У нашому випадку ми використовуємо _start або можна використовувати main.

Ми просто переміщаємо значення десяткове 16 або шістнадцяткове 10 в 64-бітовий регістр RAX. У найближчому майбутньому ми побачимо, що процесор використовує лише нижній EAX регістр під час відлагодження в GDB.

Останній шматок — це простий виходний рутин, який ми переміщаємо 60 в RAX і потім syscall. Він просто повертає операцію назад в ОС.

Давайте скомпілюємо і зв'яжемо:

Давайте відлагодимо в GDB:

Давайте встановимо відлагоджувач для інтелект-синтаксису і встановимо зупинку на початку:

Як ми бачимо, десяткове 16 або шістнадцяткове 10 майже готується бути переміщено в EAX, але поки воно не було виконано, поки ми не крокуємо вперед.

Тепер ми можемо переглянути свої регістри.

Ми бачимо, що RAX успішно зберігає десяткове 16 або шістнадцяткове 10.

Ми витратимо декілька тижнів на ці прості приклади, щоб ви могли відчувати себе комфортно з тим, як працює процесор і його внутрішні механізми.

results matching ""

    No results matching ""