2009-09-25 7 views
3

J'ai écrit ce programme C et je l'ai exécuté sur mon système Windows. Mon système a pendu et même le gestionnaire de tâches s'ouvrait. Finalement, j'ai dû redémarrer. Ceci est clairement un programme malveillant, mais mon antivirus ne le détecte pas. Pourquoi?Pourquoi mon programme antivirus ne détecte-t-il pas ce comportement malveillant?

#include<unistd.h> 
main() { 
while(1) 
    fork(); 
} 
+2

Mais pourquoi cela a-t-il été rejeté? – avd

+0

Dunno, un snob de la programmation qui pense qu'il est meilleur que toi. Je l'ai upvoted pour vous. –

+0

Merci beaucoup – avd

Répondre

3

Les développeurs n'utilisent généralement pas le logiciel AV en raison de la pénalité énorme de vitesse, ou du moins ils désactivent sur la sous-arborescence du système de fichiers ils travaillent.

Mais même si ce n'est pas le genre de modèle AV le logiciel essaie de détecter. Le logiciel AV recherche les fichiers que vous lisez et écrivez et les modifications apportées à l'état du système, ou les virus identifiés spécifiques ou leurs signatures précédemment identifiées.

Et comment cela déciderait-il, de toute façon? Du point de vue d'un programme, il y aurait une fine ligne entre un serveur web surchargé et une bombe à fourche. Enfin, ce type de comportement est en quelque sorte autocorrecteur. Si nous avions vraiment des virus qui arrivaient avec rien de plus dommageable qu'une bombe à fourche, nous pourrions simplement déclarer la victoire et dire «ne faites pas ça».

BTW, avez-vous exécuté la bombe de fourchette en tant qu'administrateur?

+0

Ya j'ai couru en tant qu'administrateur mais cela fera-t-il autrement la différence? – avd

+1

Typiquement, le nombre de procs qu'un non-administrateur peut démarrer est limité par le noyau. – DigitalRoss

6

Les programmes antivirus ne reconnaissent pas les comportements malveillants - ils reconnaissent les modèles de virus qui sont des savoir déjà dans les sauvages (noms de fichiers, les noms de processus, signatures binaires, etc.).

C'est pourquoi ils peuvent souvent être subvertis car ils constituent une solution réactive à un problème évolutif.

+0

Mais c'est une chose si basique signifie processus de forking. Ne peuvent-ils même pas le détecter? – avd

+1

En outre, votre extrait n'est pas vraiment un virus car il n'a aucune possibilité de se reproduire. Si cette charge utile était injectée dans un certain type de virus, et si elle se propageait suffisamment, les éditeurs de logiciels antivirus l'identifieraient ainsi et ses modèles et l'ajouteraient à leur liste. – mjv

+4

Bien que certains programmes de virus aient une vérification heuristique qui peut vérifier le comportement de type viral (comme tenter d'écrire dans l'espace de la mémoire du programme). –

0

Eh bien, ce n'est pas un comportement malveillant, ressemble plus à une erreur de logique dans votre code. Je souhaite qu'il y aura un antivirus un jour qui pourrait détecter les applications, pilotes, mises à jour ms, ms produits qui causent BSOD =)

+0

Ce n'est pas une erreur logique. Je l'ai écrit intentionnellement pour tester. – avd

+0

rien de personnel, mais il n'y a pas de raison dans ce code. Cela ne nuit ni ne produit rien de productif. –

2

Votre programme n'est pas un virus, car il ne peut pas se propager, c'est-à-dire, il ne peut pas infecter d'autres fichiers/ordinateurs

Questions connexes