본문 바로가기

보안공부/Linux

디바이스 드라이버 만들기

반응형

int register_chrdev(unsigned int major , const char *mem , struct file_operation *fopen)

- 문자 디바이스 드라이버를 커널에 등록하는 함수

- major : 디바이스 주번호

- mem : 디바이스 이름

- fopen : file_operation 구조체 변수 주소

- return값 : 실패 음수값 , 성공 major값



basic.c


register_chrdev 함수를 활용하여 커널 드라이버를 등록 하고 unregister_chrdev함수를 활용하여 등록된 커널드라이버를 헤제한다.

결과는 다음과 같다.


/proc/devices 를 보고 등록된 커널 드라이버목록을 확인한다. 주번호 240 에 basic_driver라는 드라이버가 등록되어있다.


nknod /dev/basic c 240 0

-> 디바이스 파일 만들어 주며 해당 basic에대한 디바이스 파일을 만들어준다. user모드에서 해당 장치를 호출하게 되면 디바이스 파일을 거쳐서 kernel에 요청하게 된다. 구분하는 번호는 240(주번호) 로 구분된다.


open 과 release 가 호출될때 basic_open 그리고 basic_release 로 연결해준다.

다음 소스로 test 해보았다.

해당 소스는 /dev/basic 을 open하였고 open하게되면 basic_open을 호출한다. 그리고 close 를 호출하게 되면 basic_release를 호출하게된다.

결과는 다음같다.


커널 드라이버를 떼어내고 실행하게되면 No such device or address 라는 에러 메세지를 보여준다.

open으로 파일을 열었지만 하나의 devie로 인식한다는 것을 보여준다.

반응형

'보안공부 > Linux' 카테고리의 다른 글

volatility 명령어  (0) 2017.01.10
드라이버 Read Write  (0) 2016.05.23
2016-05-09 심볼공유  (0) 2016.05.09
2016.05.02 수업  (0) 2016.05.02
lsmod  (0) 2016.04.18