---
# System prepended metadata

title: Binary intro

---

# 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