해킹 기법 중 상당한 케이스에서 쓰이면서 강력하고 현재까지 쓰이는 방법은 버퍼 오버플로에 의한 코드 주입 방법.


해커가 데이터 스트림이든, 메모리든 원하는 기계어 명령어를 메모리에 박고, 익스플로잇을 통해 실행시킨다 - 는게 기본 원리인데,


이걸 하드웨어 레벨에서 완전히 차단할 수 있는 방법이 있음. 중딩 때 구상한 건데,


현재 메모리는 코드와 데이터 구분 없이 하나의 메모리 칩으로 운용하고 있는데,


이를 코드 메모리와 데이터 메모리로 칩을 구분하고, 또 스택 메모리도 칩을 구분한다.


그리고 스택 메모리는 순수하게 Return Address 만을 보존한다. 함수의 지역 변수 공간은 데이터 메모리 내에서 마련.


이러면 버퍼 오버플로로 뭔짓을 하든, ROP을 하든 해커가 임의의 기계어 명령어를 실행시키는 건 매우 어려워진다.


따로 프로그램이 함수 포인터를 운용하지 않는 이상은.