- stack:局部变量,rbp,返回地址...
- heap:通过malloc分配的内存
- bss,data:全局变量,字符串...
- text:代码段
## Review: 调用约定
64位 Linux 下,函数参数依次进入:
```text
rdi, rsi, rdx, rcx, r8, r9, stack
```
返回值在:
```text
rax
```
## Review: linux基本保护
- ASLR (Address Space Layout Randomization)
- RELRO (Relocation Read-Only)
- Canary
- NX (No-eXecute)
- PIE (Position Independent Executable)
用checksec查看二进制保护情况
## RELRO GOT表和PLT表——延迟绑定技术
What happended when we call a glibc function (for example,printf)?
由于ASLR的存在,每次程序运行动态链接库的加载地址不确定