Частина 23 - Дебагування ASM 1 [Moving Immediate Data]

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

Давайте почнемо з завантаження бінарного файлу в GDB. Для завантаження в GDB натисніть:

gdb -q moving_immediate_dat

Давайте встановимо перехід на початку програми, натиснувши b _start.

Далі ми можемо запустити програму, натиснувши r. Після чого ми можемо розпочати розбор програми, натиснувши disas. Ми написали nop, що означає «нічого не робіть» або 0x90 з точки зору OPCODE для належного дебагування, яке було виконано правильно. Це добра практика при створенні програми на мові ассемблера.

Натива syntax, як я вже багато разів вказував, це AT&T syntax, яку ви бачите вище. Я намагався повернутися і вперед, щоб ви мали відчуття кожного, але далі я буду дотримуватися AT&T syntax, хоча хотів показати кілька прикладів обох. Я знову підтверджую, що якщо ви хочете побачити Intel syntax, просто натисніть set-дизасемблювання-flavor intel і ви побачите те, чого бажаєте. Ми використовуємо команду si, яка означає «впровадити крок», щоб просунутися далі на інструкцію. Що ми бачимо тут _start+0, ви переміщаєтеся в hex значення 0x64 в EAX. Це просто переміщення дійсного значення 100 або як комп'ютер бачить його, hex 0x64 в EAX, що демонструє переміщення миттєвого значення в регістр.

Ми знову зробили крок-у-ногу і потім використовуємо команду i r, яка має пробіл між ними, щоб надати інформацію про стан регістрів ЦП. EAX тепер має значення 0x64 в hex або 100 в дійсному числі.

Після того, як ми зробили крок-у-ногу знову і зробили disas, ми бачимо, що ми тоді перемістили значення 0x50 в метку buffer як можна звернутися до джерельного коду з останньої неділі, щоб побачити. Коли працюємо з не-регістровою інформацією, ми можемо використовувати команду друку вище, коли ми друкуємо print /x buffer і воно явно показує нам, що значення всередині буфера 0x50. /x означає «показати нам значення в hex». <div class="slate-resizable-image-embed slate-image-embedresize-middle"></div>

Слідуючи цьому, ви можете переглянути слайд 2 цього навчального матеріалу ви бачите в _start+5 миттєве значення 0x50 завантажене в метку buffer або в цьому випадку адресу buffer яка 0x8049090 і ми можемо дослідити його, використовуючи інструкцію досліджувати, натиснувши x/xb 0x8049090 яке показує нам один байт в hex місці яке дає 0x50.

Ми зробимо це з кожним прикладом програми, щоб глибше вивчити процес дебагування. Якщо є якісь питання, будь ласка, залиште їх нижче в коментарях. Я чекаю на побачення з вами усіх наступної тижня, коли ми розпочнемо створювати наш перший збірник хаків!

results matching ""

    No results matching ""