Частина 19 - Дебагування подвійної примітивної типової даних
Для повного змісту змісту всіх уроків натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть обговорені. https://github.com/mytechnotalent/hacking\_c-\_arm64
Сьогодні ми будемо дебагувати дуже просту подвійну примітивну типову дані.
Для початку відкрийте нашу бінарну файл у Radare2.
radare2./0x06_asm64_double_primitive_datatype
Давайте скористаємося Radare2 функцією автоматичної аналізу.
aaa
Наступним логічним кроком буде запуск програми в режимі дебагування, щоб вона відображала на диску в процесі виконання.
ood
Тепер, коли ми маємо працюючий екземпляр, ми можемо звернутися до головної точки входу бінарного файлу.
s main
Давайте зробимо початкову експертизу, виконавши наступні дії.
v
При роботі з подвійними числами з плаваючою комою в ARM64 необхідно розуміти, що ми хочемо знайти місце виконання інструкції fmov, де ми беремо значення з нашого регістра w0 і переміщаємо його в регістр плаваючої коми d0. Тут відбувається справжня магія! Це дуже подібно до нашого числення з плаваючою комою, яке працює з s0.
Давайте встановимо зупинку прямо нижче інструкції fmov. Пам'ятайте, що адреси ASLR будуть відрізнятися від цього прикладу.
[0x556bf809b4]> db 0x556bf809c4 [0x556bf809b4]> dc hit breakpoint at: 0x556bf809c4 [0x556bf809c4]> dr w0 0x33333333
Ми переміщаємо свій регістр w0 в d0, тому ми обов'язково повинні змінити ці значення в d0, які відрізняються від нашого числа з плаваючою комою. Ми розберемо це в наступному урокі.
Давайте продовжимо показувати нашу вартість.
[0x556bf809c4]> dc 10.1 (39979) Process exited with status=0x0 [0x7fa37da0fc]>
У наступному урокі ми змінимо цю вартість!
Хочу звернути увагу, що в українському тексті відсутні спеціальні символи, які були присутні в оригінальному тексті!