Pregunta

Desde el modo kernel en Windows, puedo interceptar y monitorear virtualmente todas las acciones realizadas en un disco en particular. Cuando se abre un archivo para cualquier propósito, obtengo un evento.

Ahora quiero rastrear qué aplicación la abrió. Creo que esto debería ser posible pero no sé cómo.

Estoy usando las funciones estándar de administración de archivos en Windows Win32 API.

Gracias de antemano.

/ Robert

¿Fue útil?

Solución

Simplemente use Win32 N.API para obtener el pid desde el controlador de archivos. Es una pregunta frecuente durante 15 años ...

Otros consejos

Sysinternals Filemon (gratis) hace esto, y mejor aún describen cómo lo hicieron:

  

Para el controlador de Windows 9x, el corazón   de FileMon está en el dispositivo virtual   Conductor, Filevxd.vxd. Es dinamicamente   Cargado, y en su inicialización.   instala un filtro de sistema de archivos a través de la   Servicio VxD,   IFSMGR_InstallFileSystemApiHook, para   insertarse en la cadena de llamadas de   Todas las solicitudes del sistema de archivos. En Windows   NT el corazón de FileMon es un archivo   controlador del sistema que crea y   adjunta objetos del dispositivo de filtro a   objetos de dispositivo del sistema de archivos de destino para   FileMon verá todos los IRP y   Solicitudes FastIO dirigidas a unidades.   Cuando FileMon vea una apertura, cree o   cerrar llamada, actualiza un interno   tabla hash que sirve como mapeo   entre los identificadores de archivo internos y el archivo   nombres de ruta. Siempre que vea llamadas   que se basan en el asa, busca el   manejar en la tabla hash para obtener el   Nombre completo para su visualización. Si un   el acceso basado en manejador hace referencia a un archivo   abierto antes de que comenzara FileMon, FileMon   no podrá encontrar la asignación en su   tabla de hash y simplemente presentará el   valor del identificador en su lugar.

-Adam

Sysinternals hizo un trabajo tan bueno al hacerlo y al explicarlo, que todavía hay disponible un código fuente de la versión anterior aquí por ejemplo, y el código está bien documentado (imho). También podría ser un buen comienzo.

Utilizaría el " handle.exe " aplicación de Sysinternals.

O, ¿realmente estás tratando de hacer esto programáticamente?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top