Частина 10 - Дебагування примітивного типу даних символу
Для повного змісту змісту всіх уроків натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/hacking\_c-\_arm64
Сьогодні ми будемо дебагувати дуже простий примітивний тип даних символу.
Для початку відкрийте нашу бінарну у Radare2.
radare2./0x03_asm64_char_primitive_datatype
Давайте скористаємося функцією автоматичної аналізу Radare2.
aaa
Наступним логічним кроком буде запуск програми в режимі дебагування, щоб вона відображала на диску вихідний машинний код в робочий процес.
ood
Тепер, коли у нас є робочий екземпляр, ми можемо звернутися до головної точки входу бінарного файлу.
s main
Давайте зробимо початкову експертизу, виконавши наступні дії.
v
Ми бачимо, що на 0x5576bff9ec ми переміщаємо 0x63 або ascii 'c' в регістр w0. Пам'ятайте, що ваш адрес буде різним через ASLR.
Давайте встановимо зупинку на 0x5576bff9ec і перевіримо вміст.
[0x5576bff9e4]> db 0x5576bff9ec [0x5576bff9e4]> dc hit breakpoint at: 0x5576bff9ec [0x5576bff9ec]> dr w0 0x00000001 [0x5576bff9ec]> ds [0x5576bff9ec]> dr w0 0x00000063 [0x5576bff9ec]>
Це дуже простий крок, але давайте розберемо його. Ми встановили зупинку і продовжили виконання. Ми переглянули вміст регістру w0 і побачили, що значення становить 0x01.
Далі ми зробили крок вперед і знову переглянули вміст регістру w0 і побачили, що 0x63 був успішно переміщений в регістр w0, оскільки тепер ми бачимо, що він містить 0x63.
Якщо ми зробимо ще один крок вперед, ми побачимо, що воно відображається в stdout, як очікувалося.
[0x5576bff9ec]> dc c (10845) Process exited with status=0x0 [0x7f9727503c]>
У наступному урокі ми змінимо символ на іншу значення своєї вибору.