Частина 16 - Хакінг Hello World

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

Давайте переглянемо свій код з двох тижнів тому.

Давайте знову відлагодимо.

Давайте знову вивчіть вміст рядка в пам'яті адреси 0x10750 і продовжимо виконання програми.

Як бачите, він містить рядок “Hello World!” і коли ми продовжимо його, він відобразиться в терміналі так.

Хакуй! Тепер давайте перезапишемо значення всередині пам'яті адреси на рядок “Hacked World!” і продовжимо виконання.

Вуа-ля! Наш перший хак! Як бачите, коли ви розумієте Асемблер, ви маєте абсолютний контроль над усіма бінарними файлами, незалежно від мови, в якій вони написані. У цьому дуже простому прикладі ми змогли змінити значення в пам'яті адреси 0x10750 на яке, коли виконувалося, воно відобразилося в терміналі або стандартному виході “Hacked World!”.

Давайте знову запустимо бінарний файл і зробимо розборку.

Давайте тепер зробимо той же процес, але si 3x і вивчіть рядок всередині r1. Як бачите, він містить “Hello World!”, оскільки він був успішно ldr (завантажений з пам'яті в регістр) в main+12.

Давайте тепер встановимо r1 на “Hacked World!” і продовжимо виконання. Як бачите, ми тепер його змінили виходячи з регістру, а не з пам'яті. Ви вже починаєте бачити, що є кілька способів змінити щось і ось простий приклад двох таких способів.

Реверс-інжиніринг — це все про те, щоб зрозуміти, як виконує програму, і захоплювати виконання потоку і змінювати значення відповідно до нашої мети! Сьогодні ви зробили свій перший крок у цій захоплюючій подорожі!

Наступна неділя ми вийдемо на константи.

results matching ""

    No results matching ""