Частина 40 – Хакінг оператора попередньої інкрементації

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

Давайте знову переглянемо наш код.

Ми створюємо змінну myNumber = 16 до якої створюємо ще одну змінну myNewNumber яка попередньо збільшує значення myNumber. Ми бачимо, що коли ми виконуватимемо наш код, воно показуватиме 17.

Давайте розберемо це:

Ми створюємо змінну myNumber = 16 до якої створюємо ще одну змінну myNewNumber яка попередньо збільшує значення myNumber. Ми бачимо, що коли ми виконуватимемо наш код, воно показуватиме 17.

Коли ми попередньо збільшуваємо значення змінної, воно збільшується до призначення йому іншої змінної. Наприклад, myNumber є 16, тому воно збільшується до призначення йому myNewNumber і тому ми отримуємо 17.

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

Ми починаємо свій звичний старт в gdb і зупиняємося на main. Зверніть увагу на main+24 ми переміщаємо значення 1 в r3. Потім ми бачимо на main+28 ми зберігаємо це значення в r11-8 до якого ми встановимо зупинку і продовжимо.

Як ми оцінюємо значення в r3 на цій стадії ми бачимо 17. Пам'ятайте, що в нашому оригінальному коді значення змінної myNumber було 16. Ми бачимо, що оператор попередньої інкрементації був успішним у збільшенні значення 1 щоб отримати 17.

Ми бачимо, що коли ми продовжимо через код, значення 17 буде успішно виведено в термінал як очікувалося.

Давайте знову запустимо програму.

Давайте хакнемо! Тут ми переглядаємо значення в r3 яке ми знаємо бути 17. Давайте його хакнемо на щось інше.

Успіх! Як ми бачимо, коли ми продовжимо, тепер ми бачимо хаковане значення яке виводиться в термінал.

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

results matching ""

    No results matching ""