-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.txt
41 lines (35 loc) · 1.8 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
## Не забыть отключить randomize_va_space ##
1. Ассемблер x86, AT&T
- Основные команды, порядок операндов:
mov, lea, jmp
add, sub, xor, and, or, not...
- Регистры:
%eax, %ebx, %ecx, %edx
%esp, %ebp
%eip
- Адресация:
mov $123, %eax
mov %ebx, %ecx
mov 123, %eax
mov 4(%eax), %ebx
- Суффиксы b,w,l
- Стек в линукс выровен по long(4 байта на x86)
2. Системный вызов в Линукс [./syscall/]
- Передача параметров и возвращаемое значение
- int $0x80
- Показать пример
3. Соглашение о вызове cdecl
- Аргументы кладутся в стек в обратном порядке
- Результат возвращается в %eax(если результат целый и не больше 4-х байт)
- Стек очищает вызывающая функция
4. Стек, кадр стека.
- Назначение регистра %ebp
- Команды push, pop, call, leave, ret
5. Пример стека [./stack_frame/]
- Показать исходник и вывод objdump
- Разобрать по шагам как изменяются значения регистров и стек
6. Переполнения буффера [./overflow/]
- Рассказать как переполнение может повлиять на ход выполнения программы
- Рассказать, что такое shellcode
- Показать шеллкод для hello world! [./overflow/shellcode-hello/]
- Показать в дебаггере переполнение и выполнение шеллкода