www org mapwingis mapwindows mapwindow espaƱol c# .net c++ winapi

c# - org - mapwindows 5



Monitorear el inicio del proceso en el sistema (4)

Debería consultar el proyecto easyhook-continuan-desvíos , que es un puerto .NET del proyecto Microsoft Detours . Le permitirá conectar API no administradas (como CreateProcess). Vea aquí ejemplos de código para un sencillo programa similar a FileMon.

¿Hay alguna forma de supervisar los procesos que comienzan en el sistema antes de que comiencen?

Ejemplo:
En programas como ZoneAlarm o Antivirus, cuando ejecuta un programa le pregunta si permite ejecutar este programa o no antes de que se ejecute ...


Hay algunas maneras de hacer esto. Si solo necesita rastrear la creación del proceso proveniente de un programa específico (o algunos programas), el método EasyHook / Detours mencionado aquí funcionará bastante bien, pero efectivamente necesita instalar un gancho en CreateProcess en cada programa, por lo que no es un gran solución si desea rastrear toda la creación de procesos en el sistema.

Hay una API específica para esto en variantes de Windows basadas en NT (NT / 2000 / XP / Vista) llamadas PsSetCreateProcessNotifyRoutine (). Desafortunadamente, solo puede llamar a esta función desde ring0, por lo que debe hacerse en un controlador. Hay una explicación útil (y código) en este artículo de CodeProject: http://www.codeproject.com/KB/threads/procmon.aspx .

AFAIK, esto es solo una notificación, y por sí solo no le permite decirle al sistema si el proceso debe ser creado o no. Sin embargo, si necesita hacer esto, puede pausar el proceso (por ejemplo, adjuntándolo como un depurador) mientras su código decide si matarlo o no.


Puede averiguar cuándo comienzan los procesos mediante el uso de un consumidor de ETW en tiempo real. Sin embargo, para poder tomar alguna acción que posiblemente podría cancelar el proceso desde el inicio, tendrá que hacer algo sospechoso / no documentado, como enganchar CreateProcess, o utilizando un controlador de filtro de núcleo para bloquear las lecturas en el EXE.


Solo use las notificaciones de creación de procesos. Está incluido en Windows. No necesitas conectar nada.