Articles in this series
커널이란? 운영체제의 핵심이 되는 소프트웨어 우리가 실행하는 프로그램들은 CPU, memory, device 들과 상호작용을 직접적으로 하는 것 같아 보이지만, 실제로는 커널을 통해 이루어진다. 즉, 각 자원들을 관리하는 것이 Kernel이다. 어디에...
Task란? 검색을 해보면 태스크를 태스크, 스레드, 프로세스로도 표현한다고 한다. 결국 태스크는 작업 실행 단위를 이야기하는 것 같다. task_struct란? 결국 모든 태스크들은 task_struct 구조체를 통해 관리하게 된다. 태스크 또는 스레드가 생성되면...
슬랩 할당자란? 커널에서 사용하는 동적 메모리 할당자이다. 유저모드에서 사용하는 heap과 유사하다고 보면 된다. 특이점은 메모리 풀 구조를 가지고 있으며, 미리 고정된 크기의 메모리 블록들을 할당해 놓는다는 것이다. 슬랩 할당자는 slab, slub, slob의...
디바이스 드라이버란? 컴퓨터 연결된 장치들과 상호작용을 하기 위해 해당 장치로 접근할 수 있게 해주는 소프트웨어를 이야기한다. 커널이 컴파일 될 때부터 포함된 디바이스 드라이버도 있지만, 나중에 커널 부팅 또는 부팅 후 로드되는 드라이버도 있다. 이는 모듈의 일종이기에...
모듈이란? 모듈은 동적으로 커널에 등록하거나 제거할 수 있는 프로그램을 말한다. 이를 통해 커널을 재 컴파일 하지 않고 기능을 추가하거나 제거할 수 있다. 모듈 프로그래밍 및 컴파일 모듈 코드는 보통 위쪽에 작동할 코드가 작성되고, 가장 아래에 모듈을 실행하는 함수인...
서론 CTF에서 kernel 관련 문제의 경우 기본적으로 관련 시스템 환경이 구성된 상태로 파일로 제공된다. 물론 해당 파일만으로 어떻게 분석하는지, 어떻게 사용하는지만 알면 "문제를 푸는 것"은 충분히 가능하다고 본다. 하지만, 살짝만 더 들어가서...