Question

#include<stdio.h>
#include<conio.h>
union abc
{
    int a;
    int x;
    float g;
};
struct pqr
{
    int a;
    int x;
    float g;

} ;

void main()
{
    union abc b;
    struct pqr c;
clrscr();
b.a=10;
textbackground(2);
textcolor(6);
cprintf(" A = %d",b.a);
printf("\nUnion = %d",sizeof(b));
printf("\nStructure = %d",sizeof(c));
getch();
}

Je l'ai sauvé ce programme virus.cpp. J'utilise le compilateur Turbo C pour compiler ce programme et exécuter de Turbo C (Ctrl + F9).

J'utilise Windows 7 et j'ai installé le système de virus Avira AntiVir.

Quand j'essayé de courir au-dessus de programme, il crée un ver (DOS / bonbons). Je crois qu'il n'y a rien de mal dans le programme.

texte alt

Maintenant, voici quelque chose de spécial. Exécutez le même programme avec la différence suivante. Ici, la seule différence est l'espace entre \n:

#include<stdio.h>
#include<conio.h>
union abc
{
    int a;
    int x;
    float g;
};
struct pqr
{
    int a;
    int x;
    float g;

} ;

void main()
{
    union abc b;
    struct pqr c;
clrscr();
b.a=10;
textbackground(2);
textcolor(6);
cprintf(" A = %d",b.a);
printf("\n Union = %d",sizeof(b));
printf("\n Structure = %d",sizeof(c));
getch();
}

La différence est seulement \ n et de l'espace. Ma question est, pourquoi mon programme simple est détecté comme virus?

Voici un autre exemple de code, cette fois pour C ++:

#include<iostream.h>
#include<conio.h>
class A
{
    int a,b;
public:
    A()
    {
        a=0;b=0;
    }

    A(int x)
    {a=x;
    b=0;
    }

    A(int x,int y)
    {
    a=x;
    b=y;
    }

    ~A()
    {
    cout<<"All things are deleted.";
    }

    void get()
    {
    cout<<"\nA = "<<a;
    cout<<"\nB = "<<b;
    }
};

void main()
{

A a1(5,10);
clrscr();
a1.get();
getch();
}

Quand je lance ce programme, il donne « Virus Warning » - Même il n'est pas un virus. Maintenant, la tragédie est lorsque vous retirez Destructeurs, il ne sera pas détecter le virus.

Voici la capture d'écran et la même question:

C Langue - \ n - virus création

texte alt

La question est de savoir comment, et pourquoi?

Était-ce utile?

La solution

On dirait un faux positif. Les virus modernes utilisent polymorphisme pour cacher des programmes anti-virus, le programme anti-virus doit signaler les matchs même partielle, et apparemment votre compilateur avec le code source donné produit une correspondance partielle à ce programme malveillant.

Autres conseils

scanners de virus utilisent des heuristiques et les signatures pour détecter des vulnérabilités. Les faux positifs sont inévitables. Votre programme semble déclencher l'heuristique. On peut supposer que la somme de contrôle, la taille du fichier ou d'autres caractéristiques correspondent à un virus connu. Ceci est appuyé par le fait qu'un petit changement est suffisant pour résoudre le problème.

EDIT Appeler votre application virus.exe est un choix assez malheureux, et je suppose que ce serait déclenche la plupart des scanners de virus rapidement (bien qu'il soit certainement pas un nom parfait pour un vrai virus ...).

Je pense que vous avez un vrai virus quelque part, qui ont peut-être modifié les bibliothèques standard: D Ou tout simplement l'antivirus détecte un modèle dans l'exécutable.

Voir http://www.viruslist.com/en/viruses/ Encyclopédie? virusid = 1857 .

Je pense que Antivir scanne à travers des chaînes de texte DOS / bonbons contient, et depuis celui du deuxième morceau de code est comme celui qu'il cherche, Antivir détecte le fichier exécutable compilé comme un virus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top