Mi respuesta requeriría escribir algún código. Solo publico esta respuesta porque mencionaste una solución relacionada con la programación en tu pregunta.
Desde Windows Vista, el kernel de Windows genera un evento para básicamente todo lo que sucede en su computadora. Microsoft proporciona una biblioteca llamada TraceEvent para .NET que hace que sea absolutamente trivial engancharse a estos eventos.
Para detectar una captura de pantalla, puede monitorear eventos de escritura de memoria, eventos de escritura de archivos, etc. También puede enlazar notificaciones para socket IO y similares. Puedes hacer todo esto en alrededor de 30 líneas de código.
A partir de ahí, dependiendo de cuán invasivo y completo quieras ser, podrías hacer varias cosas. Puede conectar llamadas en los procesos desconocidos, como la función send
de Winsock, y terminar raspando una copia de todos los datos que el proceso escribe en un socket, y verificarlo. Puede buscar un encabezado JPEG o PNG en datos raspados y disparar las alarmas si encuentra uno. Podría abrir y analizar los archivos que escribe, etc.
Es en este punto que las cosas se pueden complicar, pero probablemente puedas enganchar la función send
con una biblioteca como EasyHook con alrededor de cien LOC.
Otro enfoque sería observar qué bibliotecas / funciones de WinAPI tal aplicación tendría que cargar para realizar esta función. Puede detectar cuándo se inicia un proceso y cuándo carga un ensamblaje (.dll) con estos eventos del kernel, por lo que podría buscar la combinación correcta (o incorrecta) de ensamblados cargados. Puede conectar automáticamente las funciones WinAPI, OpenGL o DirectX que proporcionan la capacidad de captura de pantalla en cada proceso que se inicia, y monitorear directamente cuando las aplicaciones acceden a estas capacidades.
Para obtener más información sobre este enfoque general, puede ver mi otra respuesta aquí .
Me gustaría dejar claro que lo único que me parece fácil es el proceso de conectar directamente al corazón del sistema operativo y recibir notificaciones sobre las cosas que están sucediendo. El arte de usar correctamente estos datos para capturar efectivamente el código malicioso es una tarea mucho más difícil.