例如,如果我编译:
gcc -o vuln vuln.c -fno-stack-protector -D_FORTIFY_SOURCE=0
并使用piestrip或change_mach_o_flags.py设置堆可执行文件并禁用ASLR:
https://src.chromium.org/svn/trunk/src/build/mac/change_mach_o_flags.py
如果我覆盖rip来说明包含shellcode的环境变量的地址,则进程会出现段错误。我可以在gdb中清楚地看到它在正确的位置,shellcode就在那里开始,但它已经被分段,因此必须有其他一些保护措施。
如何禁用此功能?