Debe haber algún agujero de seguridad en la aplicación.
Piense como cualquier archivo .txt muy simple y común: si lo abre con un visor hexadecimal o con un editor de teclado de texto bien diseñado, solo debería mostrar el contenido del archivo, y está bien.
Luego piense en procesar el archivo, de alguna manera, en lugar de solo mostrar los contenidos. Por ejemplo, leer el archivo e interpretar sus valores. Si no se hace correctamente, esto podría llevar a la ejecución de los bytes que están dentro del archivo.
Por ejemplo: si ha diseñado su aplicación para cargar todo el archivo y mostrarlo, pero de alguna manera tiene una variable dentro de su programa que solo tiene 256 bytes. Esto podría hacer que lea (y escriba en la memoria) más bytes de los que esperaba su aplicación. Y, imagínese, dentro de su aplicación habría cualquier comando para saltar a la posición NNNN en la memoria y ejecutar lo que hay , pero como esa posición de memoria se escribió con datos que su programa no esperaba, entonces usted Ejecutaré un código que no debería estar allí, y se cargó desde su archivo ...
Eso fue un desbordamiento de búfer ataque.
Lo mismo podría suceder con pdf, jpg, mp3, etc., si la aplicación no cargó los datos correctamente.
Otra posibilidad: por cualquier otro motivo, la aplicación (o alguna DLL que carga para leer sus datos) ejecuta alguna parte de los datos, en lugar de leerlos. Si sabe cuál sería el comando (o los datos) que provocaría este comportamiento, coloque esos comandos dentro del archivo de datos (como el archivo pdf) para que la aplicación lo ejecute.
Virus PDF : lea este sitio: enlace para saber un poco acerca de un virus que se propaga utilizando archivos PDF.