카테고리 없음
드라이버
eulb
2024. 12. 6. 03:31
시스템 커널에 기능을 추가하거나 하드웨어 자원을 추상화하기 위한 라이브러리 성격의 프로그램이다.
Legacy software driver | 링 0에서 동작하고, 커널과 상호작용 대부분의 루트킷과 보안드라이버가 해당 |
Legacy filter driver | 다른 드라이버의 하위에서 입력 값을 수정하는 드라이버 |
File system minifilter driver | 파일 시스템과 상호작용하여 파일 I/O 요청을 가로채는 드라이버 안티바이러스가 스캐닝을 목적으로 할 때 사용하거나, 디스크 암호화를 구현할 때 사용 |
드라이버가 로드되면 커널 메모리 영역에 올라오고, 운영체제에 포함된 I/O 관리자가 Driver_Object를 등록한 후 DriverEntry함수를 호출한다. DriverEntry함수는 드라이버 설정을 초기화하고 IRP 디스패치 루틴을 등록한다.
디스패치는 디스패치를 발동하는 장치의 DeviceObject와 발동 시 호출할 IRP(I/O Request Packet)를 인자로 가진다.
IRP는 다른 IRP를 호출하거나 조건이 충족되기 전까지 지연되어 처리 될 수 있다.
User-Kernel 모드간 통신
Ring3에서 동작하는 프로그램은 직접 Ring0에서 동작하는 프로그램에 데이터를 전송하거나 전송 받아올 수 없고 IOCTL을 통해 전송할 수 있다.
IOCTL은 장치 유형, 호출 함수, 버퍼링 방법, 접근제어에 필요한 정보등을 담고 있으며, CTL_CODE를 정의하여 사용한다.