이번에는 커널모드 스레드를 만드는 방법
PsCreateSystemThread를 사용해서 커널모드에서 돌아가는 스레드를 만들 수 있음
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-pscreatesystemthread
PsCreateSystemThread function (wdm.h) - Windows drivers
The PsCreateSystemThread routine creates a system thread that executes in kernel mode and returns a handle for the thread.
learn.microsoft.com
스레드가 속할 프로세스를 선택할 수 있음
유저모드의 주소공간에 연결될 스레드를 만들거나
시스템 프로세스에 속한 스레드를 만들 수 있음
시스템 프로세스에 속한 스레드를 만들기 위해서는 ProcessHandle에 NULL을 넘겨줌
특정 프로세스에 속한 스레드를 만들고 싶다면 ProcessHandle에 NtCurrentProcess 매크로를 이용해서 현재 프로세스를 넘겨줌
PsCreateSystemThread함수의 호출자가 시스템 컨텍스트에서 실행되고 있지 않는다면
ObjectAttributes에 OBJ_KERNEL_HANDLE특성을 설정해야함
그렇지 않으면 드라이버가 실행중인 프로세스의 컨텍스트에서 해당 스레드 핸들을 엑세스 할 수 있음
시스템 프로세스에 속한 스레드는 시스템으 종료되거나 PsTerminateSystemThread를 호출할 때까지 계속해서 실행됨
종료시에는 호출해주자
스레드의 핸들을 더 이상 사용되지 않는다면 ZwClose함수로 닫아줌
빌드하고 vm에서 실행하면 다음과 같은 결과를 볼 수 있음
끝
'날먹을 위한 몸부림 > Driver' 카테고리의 다른 글
사기꾼을 위한 햄날먹 드라이버 개발 - 5 (0) | 2023.01.16 |
---|---|
사기꾼을 위한 햄날먹 드라이버 개발 - 4 (0) | 2023.01.14 |
사기꾼을 위한 햄날먹 드라이버 개발 - 3 (0) | 2023.01.12 |
사기꾼을 위한 햄날먹 드라이버 개발 - 2 (0) | 2023.01.11 |
사기꾼을 위한 햄날먹 드라이버 개발 - 1 (4) | 2023.01.11 |