Частина 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. Увага! Ми повинні переписати вміст всередині справжньої адреси пам'яті з безпосереднім значенням. Веселі часи тільки починаються!
Я чекаю на всіх вас наступної тижня, коли ми підемо до хакування нашого п'ятого програми збірки!
Ось наш перший досвід роботи з масивами в мові збірки!