Частина 19 – Хакінг ADDS

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

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

Ми знову додаємо 100 десятичне в r1, 4,294,967,295 в r2. Потім ми додаємо r1 і r2 і розміщуємо в r0.

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

Ми знову бачимо adds , які встановлюють флаги в CPSR. Нам потрібно пам'ятати, коли ми відлагоджується в GDB, значення CPSR знаходиться в шістнадцятковому вигляді. Для того, щоб побачити, які флаги встановлені, нам потрібно перетворити шістнадцятковий на бінарний. Це зробить сенс, коли ми почнемо відлагоджувати і хакувати цей приклад у майбутніх уроках.

Нам потрібно пам'ятати, що біти 31, 20, 29 і 28 в CPSR вказують наступне:

Біт 31 - N = Позитивний Флаг

Біт 30 - Z = Нульовий Флаг

Біт 29 - C = Флаг переносу

Біт 28 - V = Флаг переповнення

Ми бачимо CPSR в 10 шістнадцятковий. 10 шістнадцятковий в бінарному вигляді 0001.

Отже, якщо значення в бінарному вигляді було 0001 біта 31, 30, 29 і 28 (NZCV) це означало б:

Позитивний Флаг НЕ встановлений

Нульовий Флаг НЕ встановлений

Флаг переносу НЕ встановлений

Флаг переповнення встановлений

Давайте візьмемо погляд, якщо крокати знову:

Ми бачимо 4294967295 десятичне або 0xffffffff в r2. Ми знаємо, якщо крокати знову, ми викликатимемо зміну CPSR від 0001 до 0010, що означає:

Значення в бінарному вигляді 0010 біта 31, 30, 29 і 28 (NZCV) означало б:

Позитивний Флаг НЕ встановлений

Нульовий Флаг НЕ встановлений

Флаг переносу встановлений

Флаг переповнення НЕ встановлений

Ця дія встановлює флаг переносу. Однак давайте хакнемо:

Ми хакнули r2 і змінили значення на 1 десятичне і XMDX0x1 шістнадцятковий. ДОТИМ ми знаємо раніше, ніж CPSR ішов до 0010 останнього разу, але тепер, що ми хакнули цей, давайте побачимо, що відбувається з CPSR__ коли крокаємо.

БАМ! Ми хакнули його і побачили r0 є 101 і тому не викликав флаг переносу і зберіг CPSR в XMDX0x10 шістнадцятковий що означає 0001 бінарний __що означає:

Отже, якщо значення в бінарному вигляді було 0001 біта 31, 30, 29 і 28 (NZCV) це означало б:

Позитивний Флаг НЕ встановлений

Нульовий Флаг НЕ встановлений

Флаг переносу НЕ встановлений

Флаг переповнення встановлений

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

Наступного тижня ми вийдемо на ADC

results matching ""

    No results matching ""