GCC 보호기법 해제

 

 

보호기법 완전 제거(ASLR 제외)

64비트

gcc -no-pie -fno-stack-protector -z norelro -z execstack -fno-builtin

 

32비트 

gcc -m32 -no-pie -fno-stack-protector -z norelro -z execstack -fno-builtin -mpreferred-stack-boundary=2

 

ASLR 제거

echo 0 > /proc/sys/kernel/randomize_va_space
randomize_va_space = 0 ASLR 제거
randomize_va_space = 1 스택, 라이브러리 랜덤
randomize_va_space = 2 스택, 라이브러리, 힙 랜덤
ulimit -s unlimited 일시적 ASLR 해제

보호기법

Canary -fno-stack-protector SSP 해제
-fstack-protector SSP 설정
PIE -no-pie PIE 해제
-fpie .text만 랜덤
-fpie -pie PIE 설정
NX -z execstack 컴파일시 NX해제
RELRO -z norelro RELRO 해제
-Wl,-z,relro PARTIAL-RELRO 설정
-Wl,-z,relro,-z,now FULL-RELRO 설정

 

 -mpreferred-stack-boundary

  범위 권장 값 (Dummy 제거)
32비트 2~12 2
64비트 4~12 4

 

라이브러리 링크 제외

-fno-builtin

 

 

 

 

https://gist.github.com/jrelo/f5c976fdc602688a0fd40288fde6d886

 

GCC security related flags reference.

GCC security related flags reference. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com