dimanche 2 août 2009

Le Kernel Antiviral est récursif

Je pense que la maitrise des principaux algorithmes informatiques est une condition fondamentale dans la conception d'un kernel antiviral efficace et performant. Je pense malheureusement aussi qu'un nombre très important de programmeurs négligent encore les fondamentales algorithmiques lorsqu'ils font leur travail.

Dans le cas de la programmation antivirale en général, et des kernels antiviraux en particulier : Il est préférable, voir recommandable et quasi important que le moteur d'analyse soit bâti avec une prise en charge de la récursivité. Bien sur, si je parle d'un antivirus professionnel et commercial avec une prise en charge d'un nombre important de formats de données ( Fichiers exécutables, fichiers scripts, Fichiers compressés etc.. ). Car si le kernel est destiné a traiter divers formats de données, des formats pouvant être combinés ensembles, je ne vois pas comment pourrait-on éviter la récursivité dans ce cas.

Format1 + Format2 = Format3

Objet ZIP + Object PE = Objet ZIP SFX ( Un fichier exécutable qui se transforme en un archive Zip qui se transforme en données décompressées sur le disque dur ).

On peut même aller plus loin :

(Objet Zip1 + Objet Zip2 + Objet Zip3) + (Objet PE + Objet UPX + Objet Aspack) = Objet Zip Sfx !!

tout en sachant que Objet Zip ~= Object PE + Objet HTML + Objet RAR + Objet JPEG + ...Objet n

Je veux dire qu'on peut facilement combiner un format de données vers un autre qu'on pourra ensuite combiner avec un autre et ainsi de suite. Ceci dit, pour pouvoir analyser l'objet de format de données final obtenu : le kernel antiviral se retrouvera dans la contrainte fonctionnelle d'analyse de tous les objets qui ont été combiné un par un !! Donc, jusqu'à maintenant je ne vois pas comment conduire cette tâche correctement sans avoir à passer par la récursivité.