WindowsDriver
특정 프로세스 차단 드라이버 개발 (최종)
wsoh9812
2021. 7. 7. 21:05
최종적으로 개발한 것이
'아이지키미'라는 프로그램과 같이 사용자가 원하는 프로세스를 차단하는 드라이버를 제작하였다.
미니필터로 하려다가, PsSetCreateProcessNotifyRoutineEx을 이용하여 구현했다.

위 사진과
유저가 특정 프로세스를 추가하면 DeviceIoControl API로 커널 드라이버로 ControlCode를 보낸다.
그러면 드라이버는 해당 ControlCode에 해당하는 동작(추가,삭제)등을 한다.
차단리스트는 드라이버에서 메모리에 올려 관리한다.
일단 차단 리스트는 C:\file.txt로 관리하는데,
이때 파일에대한 핸들을 드라이버가 가짐으로써 삭제, 변조를 방지한다.


어려움
1. WCHAR -> CHAR로 형변환하는게 까다로웠다..
2. 프로세스 삭제 및 관리
( 동적할당을 통해 프로세스 이름을 넣어주었고, 삭제를 그 공간을 free를 하는 것이아니라 memset한 다음 메모리상 맨아래의 프로세스 이름을 그 공간에 memmove한다.)
3. Native API를 사용하거나 커널에서 지원하는 API를 사용해야하기 때문에 Kernel에서 동작하는 API를 찾는데 어려움