의미
전처리기란, 프로그램이 컴파일이 되기 이전에 프로그램의 조건에 맞추기 위해 수행하는 사전 처리 프로그램입니다.
문제 코드
다음 코드가 전처리기에 의해서 어떻게 바뀔지 생각해보시길 바랍니다.
(문제가 있는 코드가 아닌 그냥 생각해보는 문제입니다)
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
위 문제의 정답은 stdio.h 헤더 파일에 있는 소스가 그대로 치환되어서 실행이 됩니다. 즉, 매크로 입니다.
#이 들어가는 지시어를 전처리기가 처리하는 것을 모르시는 분들도 많았을 겁니다.
전처리기가 처리하는 지시어들은 #define, #include, #undef, #if . . . 등이 있습니다.
전처리기에 의해서 처리되는 구문들이 어떠한 취약성을 가지고 있는지, 어떻게 사용되는지 알아보겠습니다 :)
참조
Rec. 01. Preprocessor (PRE)
wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87151965
'C, C++ > 전처리기' 카테고리의 다른 글
[CERT C/전처리기] (3) 복수 구문의 매크로 취약성 (0) | 2021.01.21 |
---|---|
[CERT C/전처리기] (2) 인클루전 가드 미처리의 취약성 (0) | 2021.01.21 |
[CERT C/전처리기] (1) 매크로 함수의 취약성 (0) | 2021.01.21 |