# 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