WindowsDriver 5

특정 프로세스 차단 드라이버 개발 (최종)

최종적으로 개발한 것이 '아이지키미'라는 프로그램과 같이 사용자가 원하는 프로세스를 차단하는 드라이버를 제작하였다. 미니필터로 하려다가, PsSetCreateProcessNotifyRoutineEx을 이용하여 구현했다. 위 사진과 유저가 특정 프로세스를 추가하면 DeviceIoControl API로 커널 드라이버로 ControlCode를 보낸다. 그러면 드라이버는 해당 ControlCode에 해당하는 동작(추가,삭제)등을 한다. 차단리스트는 드라이버에서 메모리에 올려 관리한다. 일단 차단 리스트는 C:\file.txt로 관리하는데, 이때 파일에대한 핸들을 드라이버가 가짐으로써 삭제, 변조를 방지한다. 어려움 1. WCHAR -> CHAR로 형변환하는게 까다로웠다.. 2. 프로세스 삭제 및 관리 ( 동적할..

WindowsDriver 2021.07.07

Mini Filter Driver Dev Part1. (feat. 개념)

'미니 필터 드라이버'를 제작하는데 있어서 필요한 내용만 정리하였다. 디바이스 스택이란? - 하나의 디바이스를 관리하기 위해 여러 드라이버가 필요하다 - 드라이버들은 디바이스를 관리하기 위해 자신의 디바이스 오브젝트 생성 - 여러 개의 디바이스 오브젝트가 스택으로 형성된다. 디바이스 스택 형성과정 - 디바이스가 연결되면, 버스드라이버가 이를 발견하고 자신의 디바이스 오브젝트를 생성한다.(버스 드라이버) - 약속이 되어있다면, Function Driver가 그 위에 디바이스 오브젝트를 만든다. (기능 드라이버) - 필터드라이버가 있다면 그 위에 디바이스 오브젝트를 생성한다. 필터 드라이버) 버스 드라이버란? - 모든 디바이스에 대해 존재하며, 하드웨어와 컴퓨터 사이의 연결을 관리한다. 필터드라이버란? - ..

WindowsDriver 2021.06.20

WindowsDriver Develop Basic2 [정리중]

#inlcude // nt legacy style 디바이스 스택을 사용하지 않음 #include // wdm style 디바이스 스택을 사용하는 경우 windbg 명령어 원하는 문맥으로 전환 ( eip컨트롤이라고 생각) 명령 순서 : .process 주소 -> .thread 주소 .process [프로세스 주소] = 전환하려는 프로세스의 주소값을 사용 .thread [쓰레드 주소] = 전환하려는 쓰레드의 주소값 1. 프로세스가 실행될때, 종료될때는 어떻게 알 수 있을까??? 새로운 프로세스가 실행되거나 종료될때마다 운영체제가 커널 드라이버의 루틴을 호출해줍니다. 즉 , PsSetCcreateProcessNotifyRoutine을 호출해준다. 2. 드라이버 또는 동적라이브러리가 메모리에 상주하는 시기를 드..

WindowsDriver 2020.09.23

WindowsDriver Develop Basic [정리중]

기본 개념 - 장치[Device]라고 하면 다른게 아니라 마우스나 키보드, USB와 같은 것들이 장치라고 말할 수 있다. - 운영체제에서는 이러한 장치를 편리하게 사용하기 위해서 PnP[플러그 앤 플레이]라는 기능이있다. (레거시 플러그 앤 플레이 ( PnP ) : 꽂으면 실행된다는 뜻) - PnP라 하면 새로운 장치를 컴퓨터에 집어 넣었을 때, 컴퓨터가 그 장치를 자동으로 인식할 수 있는 능력을 주는 표준 을 말한다. - 각 장치가 연결되면 각 장치마다 위의 구조와 같은 구조의 인스턴스가 생성되는 것이다. - > DriverObject 구조체 - 직관적으로 하나의 USB가 연결되면 해당 USB를 관리할 때 사용 하기 위해서 커널에서 DriverObject 구조체를 가진 객 체를 생성하고 생성된 개체를 ..

WindowsDriver 2020.09.22