반환 지향형 프로그래밍
반환 지향 프로그래밍은 스택 스매싱의 진화된 버전이다. 일반적으로 공격들의 이러한 종류들은 상대방이 프로그램의 버그(주로 버퍼 오버런)를 이용함으로써 콜 스택을 조작할 때 발생한다. 버퍼 오버런 시에 사용자가 제공하는 데이터를 적절한 경계 검사 없이 메모리에 저장하는 함수는 적정한 양보다 더 많은 데이터를 받아들일 수 있다. 데이터가 스택에 겹쳐써지면 초과된 데이터는 함수의 변수에 할당된 공간을 넘치게 되고 반환 주소도 겹쳐쓰게 된다. 이 주소는 이후에 함수에 의해서 제어 흐름을 다시 호출자로 넘겨줄 때 사용된다. 만약 겹쳐써졌다면 제어 흐름은 새로운 반환 주소로 넘겨지게 된다.
관점 지향 프로그래밍
일반적으로 애스펙트(aspect)는 코드로서 분산되거나 얽혀있으며 이해하고 유지보수하기를 어렵게 만든다. 잠재적으로 서로 완전히 관련이 없는 시스템, 각기 다른 원본 언어 등에서 수많은 비관련 함수들에 로깅과 같은 함수가 분산된다. 즉, 로깅을 바꿀 경우 영향을 받는 모든 모듈의 수정이 필요하다. 애스펙트는 표현이 되는 시스템의 핵심 기능에만 얽혀있는 것이 아니라 서로에게도 얽혀있다.