이번에는 유투브 강의를 통해 간단하게 배운 프로세스/DLL로드 및 소멸 모니터링하는 프로그램을 코딩해보았습니다.
개발하게 된 Driver는 PsSetCreateProcessNotifyRoutine와 PsRemoveLoadImageNotifyRoutine를 통하여 진행되었습니다.
우선, 프로세스 생성및 소멸에 관련된 정보를 얻기위해 다음의 함수를 사용합니다.
※ PsSetCreateProcessNotifyRoutine함수
- Windows는 위 함수를 통하여 드라이버에 전달을 프로세스가 생성/소멸될때 SetCreateProcessNotifyRoutine가 CallBack Routine에 추가합니다.
NTSTATUS PsSetCreateProcessNotifyRoutine(
_In_ PCREATE_PROCESS_NOTIFY_ROUTINE SetCreateProcessNotifyRoutine, // 프로세스 생성 및 소멸시 호출되는 CallBack Routine
_In_ BOOLEAN Remove // 1: 콜백루틴에서 제거 / 0 : 콜백루틴에 추가
);
프로세스 생성및 종료시 실행되는 SetCreateProcessNotifyRoutine함수는 다음의 구조를 가집니다.
void SetCreateProcessNotifyRoutine( |
NTSTATUS PsRemoveLoadImageNotifyRoutine(
_In_ PLOAD_IMAGE_NOTIFY_ROUTINE SetLoadImageNotifyRoutine // 호출되는 CallBack루틴
);
드라이버나 DLL의 로드또는 언로드시호출되는 SetLoadImageNotifyRoutine는 다음의 구조를 갖습니다.
void SetLoadImageNotifyRoutine( |
위 두함수를 통하여 구현해보았습니다. 다음은 구현화면입니다.
< 참조 : https://www.youtube.com/watch?v=aaTLMRu1R0A&list=PLpdy68VBRKQrRx0DBi1GViqr5RwCyEH-X&index=3 >
'Programming > System Programming' 카테고리의 다른 글
DeviceIoControl을 이용한 Kernel / User 통신 프로그램 (0) | 2018.07.24 |
---|---|
VirtualProtectEx메모리 속성변경 size (0) | 2018.05.24 |
[WIN32 / C]모든 프로세스 모듈 스캔 코드 (0) | 2017.05.04 |
[WIN32 / C] 권한상승 코드 (0) | 2017.05.03 |
[WIN32 / C]프로세스 하위 Thread Entry Point (EP) 코드 출력 (0) | 2017.05.02 |
댓글