잡다한 보안 공부/Linux kernel exploit 3

리눅스 커널 익스플로잇 공부를 위한 커널 프로그래밍 공부 (2)

Character Device Driver: 버퍼 캐시를 사용하지 않고 데이터를 한번에 하나의 문자를 읽고 쓰는 드라이버 Block Device Driver : 버퍼 캐시를 통한 임의 접근과 블록 단위 입출력이 가능한 드라이버 Network Device Driver : 네트워크 스택과 네트워크 하드웨어 사이에 위치해 데이터의 송수신을 담당하는 드라이버 file_operations 구조체는 Charactor Device, Block Device 드라이버와 일반 프로그램 간의 통신을 위해 제공되는 인터페이스 입니다. read,write,open 등의 함 포인터들을 사용할수 있다는 특징을 가지고 있고 Network Device 드라이버는 위의 구조체를 사용하지 않는 대신, include/linux/netdev..

리눅스 커널 익스플로잇 공부를 위한 커널 프로그래밍 공부 (1)

커널 익스플로잇을 공부하기 전에 먼저 커널 모듈을 개발하는 방법을 공부하면서 리눅스 커널에 대해서 점차 알아갈것입니다. 먼저 저는 공부 자료에 나와있는 환경과 같은 ubuntu 18 버전으로 구축했습니다. 먼저 위와 같이 필요한 패키지를 설치해야 합니다. 이제 임시 폴더를 만든뒤 이 폴더에 간단한 커널 모듈을 작성해봅니다. 이 코드는 간단한 헬로월드 예제라고 합니다. init_module() 함수에는 모듈이 커널에 삽입될때 동작해야하는 코드가 포함되고 cleanup_module() 함수는 모듈이 커널에서 제거될때 동작해야하는 코드가 포함된다고 합니다. 커널 모듈에서 출력을 할때는 printk() 함수가 주로 사용되는거 같습니다. 그리고 이 코드를 커널에서 동작하게 할려면 Makefile을 작성해야합니다...

728x90