요즈음 시스템 보안에서는 어떤 보호 기법이 등장하면 이를 우회하는 새로운 공격 기법이 등장하기에, 시스템 개발자들은 여러 겹의 보호 기법을 적용하여 시스템이 공격당할 수 있는 표면 자체를 줄여나가려고 했음
-> 따라서 시스템 개발자들은 Address Space Layout Randomization(ASLR)과 No-eXecute(NX)을 개발하고, 시스템에 적용하였음
No-eXecute(NX)는 실행에 사용되는 메모리 영역과 쓰기에 사용되는 메모리 영역을 분리하는 보호 기법임-> 어떤 메모리 영역에 대하여 쓰기 권한과 실행 권한이 같이 있으면 시스템이 취약해지기 쉽기 때문
CPU가 NX를 지원하면 컴파일러 옵션을 통해 바이너리에 NX를 적용할 수 있으며, NX가 적용된 바이너리는 실행될 때 각 메모리 영역에 필요한 권한만을 부여 받음 -> NX가 적용된 바이너리에는 코드 영역 외에 실행 권한이 없는 것을 확인할 수 있고, NX가 적용되지 않은 바이너리에는 스택, 힙, 데이터 영역에 실행 권한이 존재하는 것을 확인할 수 있음