Частина 41 - Хакінг змінних!

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

У C є кілька типів даних, до яких ми можемо створювати змінні. Я використовуватиму кілька простих прикладів:

Давайте скомпілюємо і запустимо:

Ок, як ми бачимо, ми маємо символ, ціле число і дійсне число. Це деякі з найбільш базових типів даних в C, до яких ми створили ряд змінних, як показано вище.

Давайте завантажимо байновий файл в Radare:

Давайте розіб'ємо на головну:

Ок, дуже просто ми бачимо 3 декларації змінних визначені вгорі в порядку зворотньому від того, як вони локалізаціяl_1h яка є нашою char a, локалізаціяl_8h яка є нашою int b і локалізаціяl_10h яка є нашою double c. Ви також можете побачити rbp базовий вказівник, який виділяє місце для цих змінних. Це гарна псевдокод, який показує вам відлагоджувач.

Ок, залишайтесь зі мною!

У пам'яті в 0x0000113d ми бачимо інструкції mov byte [local1_h], 0x61 яка знаходиться в нашій таблиці ASCII нижній регістр 'a'. Ми знаємо, що [local1_h] не справжній код, але що відбувається під капотом, це те, що ці змінні розміщуються на стеку в зворотньому порядку, як ми бачимо вище. Тому, якщо ми змінимо наш код щось на зразок mov byte [rbp-0x1], 0x62 що відбувається? Вельми просто, ми знаємо, що насправді код в мапованій пам'яті адресі 0x0000113d відбувається mov byte [rbp-0x1], 0x61. Вельми просто, що ми зробили, це змінили значення нашої змінної 'a' на 'b'. Це, надіяюся, повинно бути зрозуміло для вас.

Тепер давайте знову переглянемо наш байновий файл:

Як ми бачимо, в пам'яті адресі 0x0000113d ми насправді бачимо 'b'. Ми успішно змінили цю частину.

Давайте вийдемо з Radare і знову запустимо байновий файл і ми побачимо, що ми успішно змінили значення.

Час для домашньої роботи! Я хочу, щоб ви використовуючи цю інформацію тепер змінили int і double. Я хочу, щоб ви розмістили свої результати в секції коментарів нижче. Вельми важливо, щоб ви написали все це і фактично дослідили завдання, тому я чекаю на ваші зміни в коментарях!

results matching ""

    No results matching ""