CHAPITRE 1 - DEUX GRANDES FAMILLES



Il existe de nombreux types de virus, et tout autant de façon de les classer. Nous ne parlerons ici que des NON-OVERWRITTING virus (c’est à dire que le fichier infecté n’est pas écrasé, donc en théorie toujours fonctionnel). J’ai choisi pour ce guide de les classer en deux groupes: les "RUNTIME" et les "PER PROCESS RESIDENT (PPR)"

Voici un schéma très simplifié du fonctionnement de ces non-overwritting virus:











Avant infection, le fichier fonctionne normalement (hum… ça sent le scoop, là…).

Lorsqu’il y a un virus en revanche, c’est différent:

Le virus se copie à la fin du fichier (2), et remplace les premiers octets du fichier sain par un saut (1) vers le virus en lui même. Ensuite, si nous lançons le fichier infecté, ça se passe comme ça:

Etape 1: la première instruction exécutée est le saut (1) vers le virus en lui même (2) qui se charge d’infecter d’autres fichiers.

Etape 2: Le virus va restaurer (3) les premiers octets du programme qu’il s’est permis d’écraser pour y mettre le saut (1).

Etape 3: Une fois les premiers octets restaurés, le virus va passer la main au programme infecté (4) afin que ce dernier s’exécute comme si de rien n’était.


Bah, c’est vraiment le plus simple que j’ai pu trouver. Bien sur, on peut infecter à la fermeture du fichier plutôt qu’à l’ouverture, etc. Ah, et tant que j’y pense, ce schéma de fonctionnement est celui des virus de type RUNTIME. Ca tombe bien, parce que c’est un runtime que nous allons réaliser dans le prochain guide. Si vous avez compris mes explications, vous aurez deviné que ce type de virus n’infectera que quand un fichier infecté sera lancé.


En ce qui concerne les PPR virus, c’est différent et si vous ne pigez pas ce n’est pas grave, de toutes façons je n’en parlerais pas dans ce premier volume. Lors de l’appel à une API, on appelle en fait une adresse que windowz garde dans l’IMPORT_TABLE, cette adresse pointant sur l’ENTRYPOINT de l’API, cet ENTRYPOINT étant lui même dans une DLL spécifique (par exemple l’ENTRYPOINT de l’API MessageBoxA est dans la DLL user32.dll). Ce que le virus va faire, c’est jouer avec l’IMPORT_TABLE de façon à intercepter l’appel à une API déterminée, et ensuite remplacer l’adresse permettant de trouver l’API par l’adresse du virus. Ainsi, à chaque appel de l’API le virus est exécuté… redoutable!

Le virus que nous réaliserons se multipliera en infectant les exécutables windoz. Afin que les fichiers soient toujours fonctionnels après infection, il est indispensable de respecter leur structure. C’est ici qu’intervient le PE (Portable Executable). Le PE est le format de ces fichiers exécutables. Vous voulez plus de détails sur le PE? Il suffit de demander!

Note: Les Overwritting virus sont des bouses qui écrasent le fichier infectés, ce qui le rend inutilisable. Ces virus ne servent à rien, ces deux lignes sont déjà de trop.

Note2: Les vers sont aussi des programmes auto-reproducteurs, mais se différencient des virus par leur mode de replication: un vers est un programme autonome, alors qu'un virus est un parasite obilgatoire.