Как заражаются файлы и почему только exe?
Assembler
прочтение теории инфицирования лучше всего начинать с COM-файлов, хотя они и устарели
Вирус- это кусок кода. У каждой программы есть точка входа. ОС загружает программу и передает управление программе.
Вирус встраивается в эту точку входа, меняет её, записывается в конец, при вызове происходит переход не в тело программы, а в вирус, которое делает свои дела и обратно передает управление программе.
Если exe модуль подписан и посчитана контрольная сумма, то наличие вируса маловероятно. 
В другие форматы не понятно куда себя писать вирусу, возможны и варианты с DOC, XLS, там различные макросы активирующиеся на запуск, открытие и другие события, через которые получает управление вирус.
Наличие вируса определяют по характерным для вируса действиям (точно не скажу каким), командам, вызовам процедур. На вирус можно провиться на сайтах специальных типа вирустотала.
Суть вируса проста - клонировать себя, встроить в тело другого exe модуля, сделать свои дела и всё...