지식 조각들
-
LINUX 메모리 보호 기법지식 조각들/컴퓨터 2018. 8. 19. 22:18
목차 ASLR NX bit SSP ASCII-Armor RELRO PIE ASLR ASLR(Address Space Layout Randomization)은 메모리상의 공격을 어렵게 하기 위해 스택이나, 힙, 라이브러리 등의 주소를 랜덤으로 프로세스 주소 공간에 배치함으로써 실행할 때 마다 데이터의 주소를 바뀌게 하는 기법이다. * ASLR 해제하는 방법 echo 0 > /proc/sys/kernel/randomiza_va_space randomize_va_space=0 : ASLR 해제 randomize_va_space=1 : 랜덤 스택 && 랜덤 라이브러리 설정 randomiza_va_space=2 : 랜덤 스택 && 랜덤 라이브러리 && 랜덤 힙 설정 * ASLR 우회 기법 memory Leak, ..
-
Dynamic Memory Allocation지식 조각들/컴퓨터 2018. 8. 14. 01:49
목차 Dynamic Memory Allocation 힙 메모리 Dynamic Memory Allocation Dynamic memory allocation은 프로그램이 수행되는 중에 메모리가 할당되는 것을 말한다. 런타임 중에 할당되는 메모리의 종류로는 스택과 힙이 있다. 스택은 함수 호출 및 수행할 때 필요한 정보들을 담기 때문에 형식이 정해져 있어서 매우 제한적이다. 반면 힙은 제한이 없기 때문에 쓰기는 편하나 힙을 잘 관리하기가 매우 어렵다. 그렇다면 dynamic memory allocation은 왜 필요할까? 실행 중에는 예측 불가능한 상황이 나타나기 때문이다. 예측 불가능한 상황은 1) 런타임 중 변할 수 있는 메모리 영역(함수 실행, malloc, 등)과 2) 런타임 중 변할 수 있는 데이터..
-
Static Memory Allocation지식 조각들/컴퓨터 2018. 8. 13. 23:09
목차 Static Memory Allocation 프로그램이 로딩되기까지 전반적인 과정 컴파일 과정과 링킹 과정 자세히 살펴보기 Static Memory Allocation 컴퓨터 사이언스에서 static이라는 말이 붙으면 보통 실행 전(=컴파일 타임)에 일어나는 일을 말한다. Static memory allocation은 프로그램이 수행되기 전에 미리 메모리를 할당하는 것을 뜻한다. 풀어서 쓰면 컴파일 타임에 code section, data section, BSS section이 메모리에 미리 올라가는 것을 말한다. Static allocation의 특징은 변수들의 life cycle이 프로그램의 시작과 종료가 일치하는 것이다. 프로그램이 로딩되기까지 전반적인 과정 소스 파일(source file) ..
-
GCC 동작 과정지식 조각들/컴퓨터 2018. 8. 13. 21:18
목차 서론 GCC란 GCC 동작 과정 서론 운영 체제의 컴파일러와 링커가 어떻게 동작하는지 학습한 후, 내가 사용하는 컴파일러인 GCC가 어떻게 동작하는지 궁금해졌다. 그래서 간단하게 GCC의 동작 과정을 알아보기로 결심했다. GCC 동작 과정은 [여기]와 [여기]를 보면서 공부했다. GCC란 GCC(GNU Compiler Collection)는 GNU 컴파일러 모음으로 GNU 프로젝트의 일환인 컴파일러이다. 원래는 GNU C Compiler의 약자였지만 C++, JAVA 등 여러 언어를 컴파일 할 수 있게 되면서 현재의 이름으로 바뀌게 되었다. GCC는 컴파일러 모음이기 때문에 단순히 컴파일 과정뿐만 아니라 전처리 과정, 어셈블 과정, 링킹 과정과 같이 실행 파일(binary file)을 만드는데 필요..