Détection de la création/fin de processus Win32 sans pilote de noyau
Lors de l'implémentation d'un pilote en mode noyau à l'aide d'API telles que PsSetCreateProcessNotifyRoutine, il offre un mécanisme puissant pour surveillant l'activité du processus, il est également possible d'obtenir cette fonctionnalité en utilisant les fonctions de l'API Win32 en C sans recourir au développement de pilotes.
Fonctions de l'API Win32
L'API Win32 propose deux principales approches pour détecter la création et la terminaison de processus Win32 sans pilote de noyau :
Exemple de code utilisant RegisterWaitForSingleObject :
VOID CALLBACK WaitOrTimerCallback( _In_ PVOID lpParameter, _In_ BOOLEAN TimerOrWaitFired ) { MessageBox(0, L"The process has exited.", L"INFO", MB_OK); return; } DWORD dwProcessID = 1234; HANDLE hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); HANDLE hNewHandle; RegisterWaitForSingleObject(&hNewHandle, hProcHandle , WaitOrTimerCallback, NULL, INFINITE, WT_EXECUTEONLYONCE);
Dans cet exemple, WaitOrTimerCallback sera appelé à la fin du processus cible.
Considérations supplémentaires
Certaines considérations supplémentaires lors de la mise en œuvre de la surveillance des processus sans pilote de noyau incluent :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!