Частина 16 - Хакінг Hello World
Для повного змісту змісту всіх уроків, будь ласка, натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті.
Давайте переглянемо свій код з двох тижнів тому.
Давайте знову відлагодимо.
Давайте знову вивчіть вміст рядка в пам'яті адреси 0x10750 і продовжимо виконання програми.
Як бачите, він містить рядок “Hello World!” і коли ми продовжимо його, він відобразиться в терміналі так.
Хакуй! Тепер давайте перезапишемо значення всередині пам'яті адреси на рядок “Hacked World!” і продовжимо виконання.
Вуа-ля! Наш перший хак! Як бачите, коли ви розумієте Асемблер, ви маєте абсолютний контроль над усіма бінарними файлами, незалежно від мови, в якій вони написані. У цьому дуже простому прикладі ми змогли змінити значення в пам'яті адреси 0x10750 на яке, коли виконувалося, воно відобразилося в терміналі або стандартному виході “Hacked World!”.
Давайте знову запустимо бінарний файл і зробимо розборку.
Давайте тепер зробимо той же процес, але si 3x і вивчіть рядок всередині r1. Як бачите, він містить “Hello World!”, оскільки він був успішно ldr (завантажений з пам'яті в регістр) в main+12.
Давайте тепер встановимо r1 на “Hacked World!” і продовжимо виконання. Як бачите, ми тепер його змінили виходячи з регістру, а не з пам'яті. Ви вже починаєте бачити, що є кілька способів змінити щось і ось простий приклад двох таких способів.
Реверс-інжиніринг — це все про те, щоб зрозуміти, як виконує програму, і захоплювати виконання потоку і змінювати значення відповідно до нашої мети! Сьогодні ви зробили свій перший крок у цій захоплюючій подорожі!
Наступна неділя ми вийдемо на константи.