# Binary intro Сегодня мы: - прочтем асм код проги на си - узнаем что у нас в ОС 64-битное - научимся игнорировать разные места в нём (попытаемся) - порешаем таски на Buffer overflow - начнем дебажить проги в консольке 1. intro - CPU, assembly - Что-то рассказывали про процессоры в 7 классе. У проца одна шина и там и данные и код - (liveoverflow)[https://www.youtube.com/watch?v=6jSKldt7Eqs&list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN&index=5] - [assembly programming] @ https://sockpuppet.org/issue-79-file-0xb-foxport-hht-hacking.txt.html mov add sub jmp jne/je test push pop call -> ret - MMU https://m.habr.com/ru/post/211150/ - кеш в процессоре - https://en.wikipedia.org/wiki/X86-64 - (Call-стек)[https://en.wikipedia.org/wiki/Call_stack] и куча - ax 16 -> eax 32 -> rax 64 2. Возвращаемся в реальность - Отправить си файл - пишем что-то на си, компилим с gcc - file, hexdump, readelf, strings - objdump -x -d - gdb https://github.com/hugsy/gef - run arg1 arg2 ... - set disassembly-flavor intel - disassemble - info registers - si ni - set $eax=0 - x/s - break *0x20982104280 gef - vmmap - https://gef.readthedocs.io/en/master/commands/ - syscalls man syscalls - strace - ltrace library functions Секции: - .text код - .rodata -- read only data - python pwntools