tagger tag windows antivirus

windows - tagger - tag folders



¿Cómo se conecta un antivirus de Windows al proceso de acceso al archivo? (6)

El sujeto lo dice todo. Un antivirus normal debe interceptar todos los accesos de archivos, escanear los archivos y luego, de forma opcional, denegar el acceso al archivo (posiblemente incluso mostrando un mensaje al usuario). ¿Cómo puede hacerse esto?

Conozco un método llamado API de enganche, pero ese es un hack indocumentado realmente sucio, y como tal no es realmente confiable. ¿Cuál es la forma "oficial" de hacer esto?

Alternativamente, me interesaría interceptar la carga de módulos ejecutables (.DLL, .EXE, etc.), no solo lecturas arbitrarias de archivos.



Como ya ha notado, el enganche es la clave de lo que el software de AV con protección "en tiempo real" hace.

Podrías echarle un vistazo al winpooch (ampliamente discutido), que ya hace API Hooking, pero hay algunos defectos importantes en este software. Sourceforge de Winpooch

También hay un artículo sobre CodeProject sobre API hooking, que proporciona una biblioteca para enganchar "en tres capas". Dll Injection es algo difícil, como puedes imaginar. CodeProject: EasyHook, reinvención de la API de enganche

Como probablemente esté interesado en estrategias de antivirus, también sugiero echar un vistazo a ClamAV, o WinClam, que es de código abierto (bajo GPL) ClamAV para Windows

Pero no tengo ni idea de cómo hacer enganches API con C #, tengo que admitirlo. En C / C ++ esto es (bastante) fácil ...

AÑADIR Puede estar interesado en las fuentes de FileMon, un conocido FileSystem Monitor que alguna vez fue utilizado por SysInternals y ahora por Microsoft: utiliza la API Driver-Filter de Microsoft, que al menos se conoce como frágil.

El enlace se puede encontrar aquí en el foro de Sysinternals


El acceso al archivo se supervisa mediante el controlador del filtro del sistema de archivos , que funciona en modo kernel. Los controladores de filtro no solo reciben notificaciones sobre las operaciones del sistema de archivos, sino que modifican los datos que pasan a través de filtros o rechazan las solicitudes del sistema de archivos.

Puede crear un minifiltro usted mismo, sin embargo, el mantenimiento y el soporte de su código en modo kernel pueden no ser triviales, especialmente sin la experiencia de desarrollo en modo kernel. Uno de los problemas son los conflictos entre varios filtros.

Nuestra compañía ofrece el producto CallbackFilter , que proporciona un controlador listo para usar y le permite escribir lógica comercial, relacionada con el filtrado, en modo de usuario.


En general, estos productos interceptan funciones para obtener un MANEJO de un proceso como OpenProcess o NtOpenProcess. También, enganchan las funciones CreateRemoteThread y la asignación de memoria en un proceso remoto: VirtualAlloc y VirtualProcect. Algunos AV también enganchan la función SetWindowsHookEx para detectar ganchos globales para evitar registradores de teclas.

Al conectar estas API, pueden controlar qué módulos (o dlls) pueden acceder a procesos remotos y solo permiten que el usuario sepa lo que está haciendo.

Puede usar HookShark para ver qué funciones de modo de usuario son interceptadas por cada producto AV.

Para crear sus propios enganches de usuario puede usar la biblioteca de desvíos, pero debe desarrollar un agente para ejecutar los enganches en proceso y luego comunicarse con un servidor de agentes. También puede usar Deviare API Hook, que es un marco que hace que todo el personal complejo pueda codificar sus ganchos en su propio proceso utilizando cualquier lenguaje de programación.


En las versiones recientes de Windows (al menos XP en adelante) existe el concepto ''filtros'' que se puede ver utilizando MS Filter Manager, (fltmc.exe desde el símbolo del sistema)

Esto proporciona un enlace de E / S de bajo nivel al que los programas AV pueden acceder y registrarse automáticamente para pasar todas las solicitudes de E / S al sistema de archivos. Es un kit para obtener los controladores para desarrollar sus propios filtros.

http://www.microsoft.com/whdc/driver/filterdrv/default.mspx es un punto de partida para obtener información detallada.


Puede leer sobre la biblioteca de desvíos de microsoft y probarla gratis - le permite escribir ganchos de modo de usuario en c #. No es necesario que aprenda sobre los controladores:]

Sin embargo, para los ganchos del modo kernel, necesitará saber c y jugar con el DDK, al menos afaik: [

Y el software antivirus más moderno intercepta bastantes llamadas (apis de registro, apis de proceso y de proceso, etc.), no solo la API del sistema de archivos. Nuevamente, afaik.

editar: también hay algunos rootkits de código abierto: googlearlos y ver cómo realizan su enganche, supongo que será educativo.