Você deve ter cuidado ao usar o resultado teórico para argumentar que algo não pode ser feito na prática. Existem vários perigos em que se pode cair:
o resultado teórico tem suposições que não se aplicam,
o problema na prática não é bem modelado pelo modelo teórico,
na prática, uma solução não precisa ser perfeita para ser útil.
Você não forneceu uma definição formal do que é um vírus, portanto, expandir sua reivindicação sobre o exercício trivial pode ser útil para entender o que você realmente quer dizer.
Grande parte do que um software antivírus faz é detectar vírus conhecidos (e suas variantes), e isso é feito comparando cadeias (em arquivos, memória, etc.) com uma lista finita de cadeias (assinaturas de vírus). É por isso que precisamos atualizar o banco de dados do software antivírus regularmente.
Existem recursos adicionais para detectar vírus em potencial com base em seu "comportamento", mas esses métodos não são completos nem sólidos (e eles não precisam ser sólidos / completos para serem úteis). A criação de um software antivírus parece cair mais em engenharia da computação do que em ciência da computação até agora (embora a ciência da computação e a engenharia da computação estejam intimamente relacionadas).
Geralmente, esses estudos se enquadram em parte mais aplicada da segurança de computadores (e em geral áreas de sistemas: redes de computadores, sistemas operacionais etc.) da ciência da computação, mas o uso de idéias de outras partes da ciência da computação (aprendizado de máquina etc.) é típica.
Você pode querer conferir A Arte da Pesquisa e Defesa de Vírus de Computador .