Частина 7 - Дебагування базової програми I/O
Для повного змісту змісту всіх уроків, будь ласка, натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть обговорені. https://github.com/mytechnotalent/hacking\_c-\_arm64
Сьогодні ми будемо дебагувати нашу дуже базову програму перевірки входу з попереднього заняття.
Для початку відкрийте нашу бінарну файл Radare2.
radare2./0x02_asm_64_basicio
Давайте скористаємося Radare2 функцією автоматичної аналізу.
aaa
Наступним логічним кроком буде запуск програми в режимі дебагування, щоб вона відображала на диску вихідний машинний код в робочий процес.
ood
Тепер, коли у нас є робочий екземпляр, ми можемо звернутися до головної точки входу бінарного файлу.
s main
Давайте зробимо початкову експертизу, виконавши наступні дії.
v
Нотатки щодо декількох речей ми бачимо 0x5566be00cc вивід "Enter Age: " і на 0x5566be017c call до istream який буде захоплювати значення з stdin до якого ми ідентифікуємо умову невдачі на 0x5566be01d0 де ми знаходимо "Dude be real!" і бачимо результати належної перевірки входу починаючи з 0x5566be0218 де ми кажемо "You are " і потім бачимо call до виходу в потік на 0x5566be0238 і потім продовження перевірки входу на 0x5566be0244 де ми кажемо " років, здається, все добре!".
Наступним кроком буде перегляд бінарного файлу візуальним графом.
q VV ppppp
Це наш розширений візуальний граф. Ми бачимо, як програма рухається від функції до функції. Ви помітите рядки тегів, такі як [ol] або [ok] і ви можете буквально ввести наступне:
p ol
Тепер ми знаходимся всередині цієї функції.
Затем поверніться до головної програми.
qq s main VV
Це візуальний граф, який ми можемо використовувати для перегляду навколо за допомогою стрілок клавіатури.
Давайте встановимо зупинку на 0x5566be00c4 де ми bne 0x5566be0214 яке є місцем успішної програми нашої бінарної програми.
[0x5566be0194]> db 0x5566be00c4 [0x5566be0194]> dc hit breakpoint at: 0x5566be00c4 Enter Age: 33 hit breakpoint at: 0x5566be00c4 [0x5566be0194]> dc Your are 33 years old, seems legit! (2215) Process exited with status=0x0
Як ви бачите, ми здійснили цикл і ввели правильну перевірку входу і змогли отримати успішний результат.
У наступному занятті ми навчимося хакувати перевірку входу.