Частина 13 - Дебагування примітивного булевого типу даних

Для повного змісту змісту всіх уроків, будь ласка, натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/hacking\_c-\_arm64

Сьогодні ми будемо дебагувати наш дуже простий примітивний булевий тип даних.

Для початку відкрийте нашу бінарну у Radare2.

radare2./0x04_asm64_boolean_primitive_datatype

Давайте скористаємося Radare2 функцією автоматичної аналізу.

aaa

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

ood

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

s main

Давайте зробимо початкову експертизу, виконавши наступні дії.

v

Ми бачимо в 0x55718999bc movz w0, 0x1 або переміщення 0x1 в w0, який є нашим булевим true. Пам'ятайте, що ваш адрес буде відрізнятися через ASLR.

Давайте встановимо зупинку на 0x55718999bc і перевіримо вміст.

[0x55718999b4]> db 0x55718999bc
[0x55718999b4]> dc
hit breakpoint at: 0x55718999bc
[0x55718999bc]> ds
[0x55718999bc]> dr w0 0x00000001
[0x55718999bc]>

Дуже просто ми зупинилися перед тим, як значення 0x1 було розміщене в w0, а потім ми зробили крок і побачили, що воно справді знаходилося в 0x1 всередині w0 після кроку. Це означає, що наш програма успішно розмістила 1 або true в регістр w0, що збігається з тим, що створила наша джерельна код.

Якщо ми зробимо крок знову, ми побачимо, що воно відбилось в stdout, як очікувалося.

[0x55718999bc]> dc
1
(96445) Process exited with status=0x0
[0x7fac4f903c]>

У наступному урокі ми зробимо булеве значення 0.

results matching ""

    No results matching ""