完善gcc编译环境
Apt-get install gcc-multilib
?
?
-static |
静态编译 |
-z execstack |
关闭栈不可执行保护 |
-m32 |
生成32位程序 |
-fno-stack-protector |
不开启堆栈溢出保护,即不生成canary |
-mpreferred-stack-boundary=4 |
影响二进制文件中生成的代码,将堆栈指针对齐在四字节的边界上 |
-no-pie |
关闭pie以避免基地址被打乱 |
还需要系统开启ASLR才会真正打乱基地址
/proc/sys/kernel/randomize_va_space
0 |
关闭ASLR,没有随机化 |
堆栈.so的基地址每次相同 |
1 |
普通ASLR |
栈基地址、mmap基地址、.so加载基地址都被随机化,但是堆地址没有被随机化 |
2 |
增强ASLR |
在1的基础上增加了堆地址随机化 |
?
?
?
?
使用checksec工具检查编译出的文件
原文地址:https://www.cnblogs.com/da1sy/p/12301848.html
时间: 2024-10-29 04:36:12