Frage

#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();
}

Ich habe dieses Programm als virus.cpp gespeichert. Ich bin mit Turbo-C-Compiler dieses Programm und lief von Turbo C (Strg + F9) zu kompilieren.

Ich verwende Windows 7 und ich habe Avira AntiVir Virus System installiert ist.

Als ich versuchte, über Programm auszuführen, erstellt es einen Wurm (DOS / Süßigkeit). Ich glaube, es ist nichts falsch in Programm.

alt text

Jetzt ist hier etwas Besonderes. Führen Sie das gleiche Programm mit Unterschied folgen. Hier ist der einzige Unterschied ist, Raum zwischen \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();
}

Der Unterschied ist nur \ n und Raum. Meine Frage ist, warum ist mein einfaches Programm als Virus erkannt?

Hier ist ein weiteres Codebeispiel, diesmal für 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();
}

Wenn ich dieses Programm ausführen gibt es „Virus Warning“ - auch nicht ein Virus ist. Nun wird die Tragödie ist, wenn Sie Destruktoren entfernen, wird es nicht als Virus erkennen.

Hier ist der Screenshot und ähnliche Frage:

C Sprache - \ n - die Schaffung Virus

alt text

Die Frage ist, wie und warum?

War es hilfreich?

Lösung

Sieht aus wie ein falsch-positiv. Da moderne Viren Polymorphismus zu verbergen von Anti-Viren-Programmen verwenden, das Anti-Virus-Programm hat sogar teilweise Übereinstimmungen zu berichten, und anscheinend Compiler mit dem Code gegebenen Quelle erzeugt eine teilweise Übereinstimmung zu dieser Malware.

Andere Tipps

Virenscanner verwenden Heuristiken und Signaturen Schwachstellen zu erkennen. Falsch positive Ergebnisse sind nicht zu vermeiden. Ihr Programm scheint die heuristische auszulösen. Vermutlich seine Prüfsumme, Dateigröße oder andere Eigenschaften entsprechen einem bekannten Virus. Dies wird durch die Tatsache abgeordnet, dass eine kleine Änderung ausreichend ist, um das Problem zu lösen.

Bearbeiten Der Aufruf der Anwendung Virus.exe ist eine ziemlich unglückliche Wahl, und ich würde vermuten, es schnell die meisten Virenscanner auslösen wird (obwohl es ist sicherlich nicht ein perfekter Name für einen echten Virus ...).

Ich glaube, Sie einen echten Virus irgendwo haben, dass vielleicht die Standardbibliotheken geändert haben: D Oder einfach der Antivirus erkennt ein Muster in der ausführbaren Datei.

Siehe http://www.viruslist.com/en/viruses/ Enzyklopädie? virusid = 1857 .

Meine Vermutung ist, dass Antivir durchsucht Textstrings, dass DOS / Süßigkeit enthält, und da das in dem zweiten Teil des Codes wie das ist für sie sucht, erkennt Antivir die als Virus ausführbare kompiliert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top