최종적으로 개발한 것이
'아이지키미'라는 프로그램과 같이 사용자가 원하는 프로세스를 차단하는 드라이버를 제작하였다.
미니필터로 하려다가, PsSetCreateProcessNotifyRoutineEx을 이용하여 구현했다.
위 사진과
유저가 특정 프로세스를 추가하면 DeviceIoControl API로 커널 드라이버로 ControlCode를 보낸다.
그러면 드라이버는 해당 ControlCode에 해당하는 동작(추가,삭제)등을 한다.
차단리스트는 드라이버에서 메모리에 올려 관리한다.
일단 차단 리스트는 C:\file.txt로 관리하는데,
이때 파일에대한 핸들을 드라이버가 가짐으로써 삭제, 변조를 방지한다.
어려움
1. WCHAR -> CHAR로 형변환하는게 까다로웠다..
2. 프로세스 삭제 및 관리
( 동적할당을 통해 프로세스 이름을 넣어주었고, 삭제를 그 공간을 free를 하는 것이아니라 memset한 다음 메모리상 맨아래의 프로세스 이름을 그 공간에 memmove한다.)
3. Native API를 사용하거나 커널에서 지원하는 API를 사용해야하기 때문에 Kernel에서 동작하는 API를 찾는데 어려움
'WindowsDriver' 카테고리의 다른 글
Mini Filter Driver Dev Part2. (feat. 개념) (0) | 2021.06.24 |
---|---|
Mini Filter Driver Dev Part1. (feat. 개념) (0) | 2021.06.20 |
WindowsDriver Develop Basic2 [정리중] (0) | 2020.09.23 |
WindowsDriver Develop Basic [정리중] (0) | 2020.09.22 |