Vírus
Algumas pessoas – de respeito até – dizem por aí que não existe vírus para GNU/Linux porque ele ainda não é tão usado quanto o Windows®, porém basta que o GNU/Linux se difundir mais para que comecem a aparecer os vírus.
Mas pensem só: por que então não há vírus para outros sistemas operacionais famosos?
Existem outros tipos de programa malicioso para GNU/Linux (e outros sistemas operacionais), como os worms, e com o aumento do uso do GNU/Linux consequentemente haverá o aumento desses tipos de programas. Mas não vírus.
O fato é o seguinte: não existe vírus pra GNU/Linux e nem nunca vai existir. Na verdade, «vírus» só existe pra Windows® e ponto.
Bem, é uma afirmação meio radical, não é? Mas ela tem base e vamos defendê-la neste artigo.
O Windows® possui um recurso em seu gerenciamento de processos que nenhum outro sistema operacional possui (pelo menos nenhum que eu conheça). O vírus é um mau uso desse recurso.
Mas que recurso é esse?
Quando um programa é executado, ele se torna um processo (task), ou seja, processo é um programa em execução. O sistema operacional mantém um controle de quais são os processos executados e o estado de cada um.
Cada processo possui pelo menos um fluxo de procedimentos, que é uma execução linear de comandos. Este fluxo é chamado thread. Alguns processos possuem mais de um fluxo – o que é chamado multithreading.
Só que multithreading é transparente para o sistema operacional! Quem gerencia os fluxos concorrentes é o próprio processo – inclusive o programador deve programar isso explicitamente.
Então cada processo possui um controle de quais são os fluxos atuais. Porém, reiterando, isso é transparente para o sistema operacional.
No caso do Windows®, a coisa é um pouco diferente.
No Windows® quem controla os fluxos dos processos é o cerne. É um recurso interessante, pois o sistema operacional pode iniciar novos fluxos em um processo ou interferir no processo encerrando alguns fluxos.
Agora, este recurso abre uma possibilidade de mau uso: um programa pode acessar o cerne e, através dele, se propagar para dentro de outros processos em execução.
Um vírus é isso! É um fluxo (thread) dentro de um processo que se replica para dentro de outros processos.
Em outros sistemas operacionais isso não é possível, pois o sistema nem sabe dos threads, então cada processo só possui threads que lhe pertencem. Já no Windows® o sistema pode interferir nos threads dos processos.
Não podemos de todo culpar a Microsoft por querer acrescentar recursos especiais – e inusitados – em seu sistema, de modo a criar um diferencial, mas que eles realmente pensaram mal, ah isso sim! E agora já é tarde para voltar atrás.
[]'s
PS: Valeu pela dica, Fábio!