Lab 3. Memory Management
- Stack overflow로 인한 page fault가 일어나면 stack을 한 페이지씩 grow할 수 있도록 수정해 보았다.
- Trap을 handling하는 코드에 page fault의 case를 추가했다.
- Stack overflow로 인한 page fault가 맞는지를 확인하여 (using
%cr2
) 새로운 stack을 allocate한다.
Additional. LKM Rootkit
- 특정 process의 kill을 막는 Loadable Kernel Module을 구현해 보았다.
- 모듈의 init, exit function을 통해 커널에 모듈을 install, remove할 수 있게 했다.
- 커널에 모듈을 install, remove하고 설치된 모듈의 list를 확인할 수 있게 되었다. (insmod, rmmod, lsmod)
- Proc file system을 사용해 Kernel module과 user level program 사이의 communication을 구현했다.
- 커널의 system call table에 접근하여 내가 만든 함수를 특정 system call 대신 실행할 수 있게 했다.