Частина 35 - Дебагування ASM 5 [Indirect[Indirect Addressing Зареєстрованими регістрів]

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

У нашому п'ятому програмі ми продемонстрували, як можна змінювати непряме звернення з реєстрів.

Я хочу почати з питання, чому я використовую синтаксис AT&T. У попередніх лекціях я надав багато способів легко конвертувати між синтаксисом AT&T і синтаксисом Intel.

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

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

objdump -d -M intel indirect_addressing_with_registers | grep _start.: -A24

Тепер знову до нашого регулярного розкладу програми.

Давайте завантажимо байновий файл у GDB і зупинімося на _start, крок за кроком і вивчіть 6 із 11 значень всередині метки констант.

Далі ми перемістимо адресу пам'яті метки констант у edi і перемістимо безпосереднє значення 25 десятичне в другий індекс нашого масиву. Це насправді джерельний код хак, оскільки ми змінюємо оригінальне значення 8 на 25.

Якщо ви перегляньте джерельний код, ви побачите рядок 18, де ми завантажуємо значення 1 у edi. Увага! Це друге значення, оскільки масиви починаються з 0.

Ви бачите, що ми змінили значення 8 десятичне на 25, як пояснено.

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

У наступній лекції ми вручну змінимо одне з значень GDB. Увага! Ми повинні переписати вміст всередині справжньої адреси пам'яті з безпосереднім значенням. Веселі часи тільки починаються!

Я чекаю на всіх вас наступної тижня, коли ми підемо до хакування нашого п'ятого програми збірки!

Ось наш перший досвід роботи з масивами в мові збірки!

results matching ""

    No results matching ""