리눅스 시스템 프로그래밍 [1] : Prologue

 

1. 학습의 목적

그동안 미뤄왔던 리눅스 시스템 프로그래밍 공부를 다시 한번 차근차근 정리 할 필요가 있을 것 같다.

지금까지 리눅스 시스템 프로그램은 워게임 또는  Exploit을 작성할 때만 간간히 사용했던게 대부분이라
체계적이고 깊이 있는 코드 작성을 하지 못했던게 사실이다.

또한, 현재 주 업무로 진행하고 있는 모바일 기기의 커널 보안 검증을 위해서는
리눅스 시스템 프로그래밍 학습이 필수적이라 할 수 있다.

따라서 높은 산을 한걸음씩 옮겨가는 마음으로, 기본에서 부터 리눅스 커널을 완벽하게 이해할 수 있는 수준까지
차근차근 나아가보도록 하자.

 

2. 학습 방법

아무런 방향성 없이 공부를 하는 것 만큼이나 비효율적인 것은 없다.
최소한의 시간에 최대한의 성과를 얻기 위해서는 정확한 키워드와 방향성을 갖고 접근하는 것이 맞겠다.

먼저 방향성을 제시해 줄 두 권의 책은 다음과 같다.

– 리눅스 시스템 프로그래밍 – 로버트 러브 저, 한빛미디어

O’REILLY 책의 특징 (혹은 단점?) 중 하나가 바로 그림이 거의 없다는 점이다.
사실 외국 도서의 특징이기도 한데… 이 책 역시 그리 친절한 책은 아니다.

그럼에도 불구하고 이 책을 선정한 것은 시스템 프로그램을 하는데 있어 필수적인 함수들에 대해
간결하면서도 정확하게 설명하고 있기 때문이다.
다만, 개념을 익히는 데는 좋으나 활용 측면에서는 다른 리소스를 이용하는 것이 좋을 듯 하다.

linux_system_programming

 – 리눅스 커널의 이해 – 다니엘 보에이, 한빛미디어

리눅스 커널을 다룬 책의 바이블(?) 과도 같은 책이다.
번역이 매우 마음에 들지 않지만 (개인적인 생각) 그래도 리눅스 커널을 이해함에 있어
가이드를 제시해줄 수 있는 책이라 생각한다.

linux_kernel_book

 

3. 학습 목표 (프로젝트를 해보자)

단순히 단문의 코드를 짜기 보다는 목표 프로젝트를 설정하고 그에 맞게 공부를 하는 것이 빠를 듯 하다.
학습을 통해 만들고 싶은 몇가지 도구를 나열해보면…

1) inotify() 를 이용한 시스템 파일 I/O 모니터링 도구 — 현재 나와 있는 것들에 대한 개선

2) Race Condition 취약점 가능성이 존재하는 파일 검색 도구

3) Http Proxy 를 지원하는 SSH Client 프로그램 –> 이건 개인적으로 진짜 필요함;;;

정도가 되겠다.

쉽지 않은 여정이 될 것으로 보이지만… 3개월 내 모든 것을 마스터 한다는 목표를 잡고
한걸음씩 나아가 보도록 하자.

뽜이아~~

 

Site Footer

Sliding Sidebar

About Me

About Me

June Park