흔히 함수를 만들때 잘게 쪼개서, 나중에 재사용될수있게라는걸 강조하면서

여러 함수로 만들라고합니다. 하지만 이것은 좋지 못한 습관으로써, 해커들에게는 공격대상이 되곤 합니다. 


좋지 않은 함수들의 예) 


설명을 돕기위해 제가 몇가지 간단한 함수를 만들어보았습니다.

이러한 함수들의 사용은, 겉보기에는 좋아보일지 모르겠지만 보안에는 속수 무책이 되곤 합니다. 

또한 이러한 프로젝트를 진행하시다보면 재사용 가능하게 코드를 작성하셨다고 해도 

진짜 재사용하는 코드는 1%도 되지않습니다. 대부분 코드조각을 CTRL+C , CTRL+V로

재사용하곤 합니다. 그렇다면 우리는 어떻게 함수를 작성해야 하는 것일까요??


올바른 함수 작성의 예)


바로 이렇게 모든 기능을 한 함수에 넣습니다. 

또한 throw로 리턴값을 받는 방식으로 인해서, 포인터가 어려우신 분들도

쉽게 다양한 리턴값을 가질수 있게 설계할수 있습니다. 

함수는 void형이지만 catch의 사용 용도에 따라서 리턴값이 만능으로 변합니다. 


어떤이들은 이러한 방식이 프로그램의 속도를 느려지게 한다곤 하지만 

보안프로그램을 따로 개발하여 2중으로 돌리는것에 비하면 속도차이는 없는편이며,

오히려 빠를수도 있습니다. 


현재 throw형 함수 리턴은 C++ 비표준이지만 비쥬얼 스튜디오 2013은 자동으로 코드 최적화,

난독화가 진행되며 C++15에서 표준에 넣을계획이라고 합니다. 

또한 이미 부스트 라이브러리에 ThrowTypeReturn으로 검색해보시면 throw형 리턴값과 

어셈블리형 난독화 라이브러리가 있는것을 발견할 수 있습니다.