Частина 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.