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를 찾는데 어려움